2015-01-08 4 views
1

Моя программа:Неправильный выход или читать из стандартного ввода, C++

int main() { 
    int t; 
    cin >> t; 
    while (t--) { 
     int a, b; 
     cin >> a >> b; 

     printf("%i, %i\n", a, b); 
    } 

    return 0; 
} 

Почему мой выход:

551124992, 551129087 
2147483647, 551129087 
2147483647, 551129087 
... 

если вход:

81 
551124992 551129087 
2205057024 2205061119 
4204900352 4204904447 
2341777408 2341781503 

я ожидал увидеть другое Ответ:

551124992, 551129087 
2205057024, 2205061119 
4204900352, 4204904447 
... 

Но если мой вход

2 
12 15 
2 3 

У меня есть правильный вывод:

12, 15 
2, 3 

Я не понимаю, что случилось. Вот демо: https://ideone.com/izmRCn

ответ

1

В вашей демонстрации используется long long, но спецификатор формата для него недействителен. Она должна быть %lli, а не просто %i:

// This is copied from your demo: 
while (t--) { 
    long long a, b; 
    cin >> a >> b; 
    // This is modified 
    printf("%lli, %lli\n", a, b); 
    //  ^^ ^^ 
} 

Demo (forked from your code).

4

Эти цифры слишком велики, чтобы поместятся в int (предполагается, что 32-разрядные int с, как и на Windows):

81 
551124992 551129087 
2205057024 -> 2205061119 <- 
4204900352 -> 4204904447 <- 
2341777408 -> 2341781503 <- 

Максимальное значение, которое может быть сохранено в 32 -bit int is 2147483647.

Использование long long.

Смежные вопросы