在下面的代码片段中,输出不应该是1吗?为什么我得到的输出为 -1 和 4294967295? 我的理解是,这里的变量c是有符号类型的,所以它的值不应该是1吗?
char c=0xff;
printf("%d %u",c,c);
最佳答案
c 是有符号类型。一个字符是8位。因此,您有一个 8 位有符号量,所有位均为 1。在二进制补码机器上,其计算结果为 -1。
当您执行此类操作时,某些编译器会警告您。如果您使用 gcc/clang,请打开所有警告。
学究注释:在某些机器上,如果编译器将“char”视为无符号,则其值可能为 255。
关于C 从有符号 char 类型转换为 int 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42701823/