gpt4 book ai didi

c - printf 中的否定

转载 作者:行者123 更新时间:2023-12-01 13:42:34 26 4
gpt4 key购买 nike

我有下面的代码,我不确定为什么 printf 内部的否定与外部的否定不同?

char d=0x04;
printf("Value of d= %X\n",~d);
d=~d;
printf("Value of d= %X\n",d);

打印出来的结果是FFFFFFFB和FB。这意味着我可以说,在 printf 内部,表达式被转换为整数类型(默认提升),因此出现了 4 个字节!

最佳答案

在执行~操作符之前,它把操作数的类型提升为int。这意味着在您的情况下,~0x04 的结果将是 0xFFFFFFFB,因为类型 int 的宽度似乎是 32 位。

如果值 0xFFFFFFFB 被传递给 printf,它不会被提升为 int,因为它已经是那种类型,并且它会被打印出来。

如果 0xFFFFFFFB 被分配回 d,在实现定义中从 intchar 的转换方式完成。在您的情况下,结果值为:0xFB。当 d 传递给 printf 时,它被提升为 int,提升为 int0xFB 的值保持不变一样,然后打印出来。

关于c - printf 中的否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741805/

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