最近在我的研究所里,我得到了一个代码,并被要求找出答案。代码如下所示。
#include <stdio.h>
int main()
{
char ch=500;
printf("%d\n",ch);
}
输出将作为 -12
我的问题是:如何计算此类代码的值(value)?是否有任何公式或过程可以找到这些值?
最佳答案
代码在句法上是正确的,但与您的想法不同。 正如 Paul Hankin 所建议的那样,当您尝试设置一个不适合 char 变量中的 char 的数字时,您的编译器应该给您一个警告。
一个 char 是 1 个字节,因此如果有符号它可以存储最多 127 个数字,如果无符号则最多可以存储 255 个数字。 值溢出,只考虑低 8 位。
500 = 0b111110100
只取低8位:0b11110100
MSB 是 1,所以它是负数。
1补码加1是0b00001100也就是12
这就是你得到 -12 的原因。
将其替换为 short 或 int 应该可以正确打印 500。
关于c - 在 C 中打印字符变量的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286004/