gpt4 book ai didi

c - 为什么 'l' 和 'll' 修饰符对 printf 执行相同的操作 (C)

转载 作者:行者123 更新时间:2023-11-30 20:00:44 31 4
gpt4 key购买 nike

我不明白 printf 函数的 lll 长度说明符之间的区别:

printf("%ld \n", 9999999991474836499);
printf("%lld \n", 9999999991474836499);

由于类型溢出,两个 printf 产生相同的输出:

-8446744082234715117                                                                                                                                                                                                              
-8446744082234715117

因此,当我删除一位数字时,我会这样做:

printf("%ld \n", 999999999147483649);
printf("%lld \n", 999999999147483649);

我得到相同的输出:

999999999147483649                                                                                                                                                                                                                
999999999147483649

没有溢出。

我不明白 l 的意思是 long intll 的意思是 long long int 那么为什么它们不是没有什么区别吗?

最佳答案

在某些计算机上,longlong long 具有相同的表示形式,因此 lll 执行一样。对于大多数 64 位平台(Windows 除外)都是如此。 (这是对它为何如此工作的解释,而不是它必须如此工作的 promise 。)

在其他平台上 - 64 位 Windows、32 位任何平台,您都不会那么幸运。

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

关于c - 为什么 'l' 和 'll' 修饰符对 printf 执行相同的操作 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600405/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com