gpt4 book ai didi

c - 十六进制溢出但变量不溢出

转载 作者:行者123 更新时间:2023-12-05 02:22:11 25 4
gpt4 key购买 nike

我在拿按位运算开玩笑,我注意到了

int y = 0x7fffffff;

printf("%x",-~y);

打印

80000000

但如果我这样做

printf("%x",-~0x7fffffff);

它给我一个溢出错误:

main.c:65:17: error: integer overflow in expression [-Werror=overflow]
printf("%x",-~0x7fffffff);

有谁知道为什么 -~y 没有相同的行为?

最佳答案

-~y 确实有同样的问题,编译器只是不会静态地检测到它,因此不会警告您。直接使用整型字面量时,编译器在编译时进行计算,意识到存在溢出。

关于c - 十六进制溢出但变量不溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461666/

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