Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';l';和';ll';修改器对printf(C)执行相同的操作_C_Printf_Long Integer_Libc - Fatal编程技术网

为什么';l';和';ll';修改器对printf(C)执行相同的操作

为什么';l';和';ll';修改器对printf(C)执行相同的操作,c,printf,long-integer,libc,C,Printf,Long Integer,Libc,我不理解printf函数的l和ll长度说明符之间的区别: printf("%ld \n", 9999999991474836499); printf("%lld \n", 9999999991474836499); 由于类型溢出,两个printf产生相同的输出: -8446744082234715117

我不理解printf函数的
l
ll
长度说明符之间的区别:

printf("%ld \n", 9999999991474836499);
printf("%lld \n", 9999999991474836499);
由于类型溢出,两个printf产生相同的输出:

-8446744082234715117                                                                                                                                                                                                              
-8446744082234715117
因此,当我删除一个数字时,我会:

printf("%ld \n", 999999999147483649);
printf("%lld \n", 999999999147483649);
我得到了同样的结果:

999999999147483649                                                                                                                                                                                                                
999999999147483649  
没有溢出


我不明白
l
mean
long int
ll
mean
long-long int
为什么它们没有任何区别呢?

在一些计算机上,
long
long-long
有相同的表示,所以
ll
l
做同样的事情。这适用于除Windows以外的大多数64位平台。(这是对它为何如此运作的解释,而不是它必须如此运作的承诺。)

在其他平台上——64位Windows、32位任何东西——你都不会这么幸运

无论哪种方式,程序都是不正确的,它只是碰巧工作,并且不能保证它将继续工作,即使在同一平台上。

%ld“不保证处理64位整数。 “%lld”是


在C库的许多实现中,没有区别,但是有些平台可能无法打印带有%ld的大64位数字,
long int
和平台上的
long-long int
有什么区别?我正在使用这个在线编译器来执行我的测试:对您的程序的一个有用的补充是:
printf(%zu%zu\n),sizeof(long),sizeof(long-long))如果它们是相同的,这就是为什么输出是相同的。@eddiem是的,谢谢,我现在明白了为什么它会产生相同的输出:-)