考点一:char 类型变量里面存的是字符的ASCII编码,是10进制数值。占1个字节,无符号整形的。所以表示的范围是0-255.而char换成int形的时候要考虑数的正负数问题。
考点二:负数的补码:【负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。】
那么我们反着回去:
197对应的二进制是:11000101,不看符号位。减1=11000100,然后除符号位全部取反=10111011,第一位1表示负数,后面的0111011写成10进制等于32+16+8+2+1=59,所以中和起来就是-59.同理char2=198对应的%d就是-58
楼主好运!
输出197和198.
char一般默认是1个字节的无符号整型,范围0~255.
如果是有符号整型,197的单字节补码(正数原码补码一样,计算机里整数都以补码存储)是11000101,这个补码被识别为负数(最高位为1都识别为负数),转换成原码就是10111011,即-59.
注意,char类型在内存中是以ascii码(数字)形式存储的,所以和整数通用.
#include
int main()
{
char c1,c2;
c1=197;
c2=198;
printf("%c,%c",c1,c2);
printf("%d,%d",c1,c2);
return 0;
}
因为char 型是一个字节,197为 011000101 系统取最后一个字节的数据为一个负数 198同样是 在用%d输出时 输出所得负数 那么在%c输出时输出什么?其二进制数的变化时怎样的?请给出数据,谢谢。
{ char c1,c2; c1=197; c2=198; printf("%c,%c",c1,c2); ASCII 首先197是11000101,首位是1的ASCII码的定义跟系统有关,比如中文,
三楼正解.
简单的算法就是:
197-256=-59
198-256=-58