#include<stdio.h>
int main(void)
{
signed char b=0xFF;
printf("%d\n",b);
return 0;
}
这里的0xFF是255,它被初始化为b(有符号字符),但是我们知道b不能存储它,因为有符号的字符范围是-128到127。 所以b可以有-128到127之间的任何值。 但我不明白输出到底是多少?
答案 0 :(得分:0)
值转换为-1
的原因是FF 16 的位模式,即11111111 2 ,表示-1 {{1}的值在two's complement系统上。 -128的模式为80 16 ,或10000000 2 ,而127的模式为7F 16 ,或01111111 2 < /子>
当您使用可变参数列表调用任何函数时,signed char
值将转换为char
值。签名字符中的值-1表示有符号整数中的-1,因此这是打印的内容。