以下代码不能正确运行。我想让它打印出20亿加上20亿的和。尽管我在这里使用了
long
,但我无法得到正确的答案。#include<stdio.h>
#include<stdlib.h>
int main(void){
long a = 2000000000;
long b = 2000000000;
printf("%li\n",a + b);
return 0;
}
当我运行这个程序时,我得到的值是-294967296。我使用的是VS Code IDE,Mingw编译器,Windows版本是Windows 11。
sizeof(long)
是多少?在我的系统中(MS VC),它和int
一样是4
字节。因此,使用long
没有任何意义。请注意,这不是解释。 - Weather Vanelong long
和%lli
代替。 - Some programmer dude<stdint.h>
中的int_least64_t
类型,而不是未定义的long
和long long
类型。 - user3840170long
没有意义" --> 绝大部分情况的确如此。但在文件大小方面,例如在ftell()
中仍然有用,尽管文件大小有时会超过LONG_MAX
而变得不稳定。short
也有其局限性。long, short
完全没有受到重视(参考链接: https://www.youtube.com/watch?v=ZCVR_ajL_Eo)。 - chux - Reinstate Monicaunsigned long
。 - Déjà vu