中易网

C语言关于字符型变量的计算问题,不是太明白

答案:3  悬赏:40  
解决时间 2021-02-20 20:11
疑问程序如下:
#include"stdio.h"

char ch1 = 0;
char ch2 = 0;
char ch3 = 0;
char buf[4] = "123";

void main()
{
ch1 = buf[1];
ch2 = buf[2];

ch3 = ch1 * ch2;

printf ("ch3=%d",ch3);
while(1);
}

为什么打印出来的是-10?
打印改为%c,则打印出来一个红心...
最佳答案
void main()
{
ch1 = buf[1]; //buf[1]值为‘2’,'2'对应的ascii编码为50
ch2 = buf[2]; //buf[1]值为‘3’,'2'对应的ascii编码为51
ch3 = ch1 * ch2; //相当50*51=2550, 变量ch3的范围是-127~128,明显2550(1001 1111 0110)超过了最大值128,此时数据溢出后变为二进制的1111 0110,最高位的1表示负数,后面的7位111 0110表示真正内容,根据负数的编码规则(取反后加1)就变成二进制1001,十进制就是-10了

printf ("ch3=%d",ch3);
while(1);
}
全部回答
ch1= buf[1]= '2'= 50 ch1= buf[2]= '3'= 51 ch3= 50*51= 2550= 100
#include main() { char a; scanf("%c",&a); while(a=='y') { printf("yes\n"); getchar();//吸收掉回车换行字符,你输入的是y+回车,如果不洗手回车字符,那么再输入字符时回车会自动进去 scanf("%c",&a); } printf("no"); return 0; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天下足球结束时放的英文歌曲是什么名字?
用日语怎么讲 原来我只是一个小丑
水管测水平 视频
k1198火车7号车厢是几号靠窗户
个人可以办网站么?是不是不能带有广告呢?
虾小弟潜江油焖小龙虾(华南广场店)在什么地方
我用梦蔻鼻膜泥两次了,去黑头时汗毛也被吸下
气大伤身 生气后如何快速消气
安徽文科438,能考上安徽中医药大学的药品经
取公积金购房合同复印那几页
电脑噪音很大是什么原因?
该是你的终究是你的,不是你的后面是什么了不
连云港市凤翔铭居是海州实验中学的学区房吗?
家电商场我想知道这个在什么地方
一般绿叶买什么肥料
推荐资讯
太平鸟(巴彦淖尔维多利店)地址在什么地方,想
卡乐滋这个地址在什么地方,我要处理点事
大连理工大学专业排名
用QQ音乐听歌不用流量么?
求一篇身边的小事作文要求:
台湾新四大剩女是哪四个 台湾曾经的四大剩女
我喜欢你,是朋友的那种喜欢,我们还是朋友,
小米空调如何等于长虹空调如何吗
金峰酿造科技公司这个地址在什么地方,我要处
青田联华购物中心白集镇分店在哪里啊,我有事
环思ERP在行业里的影响力,你们造吗?
永昌丝绸在哪里啊,我有事要去这个地方
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?