(数字IC中,对C语言的考察比较多,输入输出/进制转换/文件读写等)
unsigned char a = -1, char b = 44, int c =a+b
以上程序运行后,c=()
答案:299
解析:
【有符号+无符号】,按照2个都是无符号算。
除了加法外,只要运算中存在有符号操作数和无符号操作数混用,都是将操作数转成无符号算。
(1)unsigned char a = -1,8位补码表示-1,首先用7-bit表示1,000_0001,取反后111_1110,加1后111_1111,加上符号位1111_1111,如果用这个8位的二进制数来表示无符号数,为255;
(2)char b = 44,本身就是正数,有符号中正数的原码、反码、补码相同,所以转成无符号数还是 44;
(3)加法自动扩展成int去算,255+44=299;