我的节目:
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
答案 0 :(得分:4)
这些数字太大而无法放入int
(假设32位int
,如Windows):
81
551124992 551129087
2205057024 -> 2205061119 <-
4204900352 -> 4204904447 <-
2341777408 -> 2341781503 <-
可以存储在32位int中的最大值是2147483647。
使用long long
。
答案 1 :(得分: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);
// ^^ ^^
}