中易网

C程序中: char c1=197,c2=198,以十进制输出会输出什么信息,为什么?

答案:4  悬赏:40  
解决时间 2021-01-18 14:33
  • 提问者网友:趣果有间
  • 2021-01-17 17:17
C程序中: char c1=197,c2=198,以十进制输出会输出什么信息,为什么?
最佳答案
  • 二级知识专家网友:山有枢
  • 2021-01-17 18:37
考点一: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

楼主好运!
全部回答
  • 1楼网友:舊物识亽
  • 2021-01-17 20:44
{ char c1,c2; c1=197; c2=198; printf("%c,%c",c1,c2); ASCII 首先197是11000101,首位是1的ASCII码的定义跟系统有关,比如中文,
  • 2楼网友:忘川信使
  • 2021-01-17 19:52
输出197和198.
char一般默认是1个字节的无符号整型,范围0~255.
如果是有符号整型,197的单字节补码(正数原码补码一样,计算机里整数都以补码存储)是11000101,这个补码被识别为负数(最高位为1都识别为负数),转换成原码就是10#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输出时输出什么?其二进制数的变化时怎样的?请给出数据,谢谢。
  • 3楼网友:山河有幸埋战骨
  • 2021-01-17 18:48
三楼正解.
简单的算法就是:
197-256=-59
198-256=-58
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息