【发布时间】:2021-11-01 00:58:01
【问题描述】:
#include <stdio.h>
int main() {
long long a, b;
scanf("%d %d", &a, &b);
printf("%lld", a + b);
return 0;
}
上面的代码读取两个数字并打印它们的总和。
我知道确切的应该使用格式说明符%lld 而不是%d,我认为这是编译错误的原因。
但是,问题是某些编译器,例如https://www.programiz.com/c-programming/online-compiler/,执行代码时没有任何语法错误,但会打印出如下所示的尴尬值,我根本不明白。
输入:123 -123
输出:235046380240896(此值不断变化)
当 int 类型存储在 long long 类型中时,基础级别发生了什么?
【问题讨论】: