C语言数字加减乘除运算,计算结果不对,哪里出了问题?

如:
unsigned char t1=121;
unsigned char t2;
unsigned char t3;
t2=(t1/2)+40; //+40 1.5cycle
t3=(t2/2)-20; //-20 1.5cycle

为什么结果t1、t2不是等于+40和-20的结果,怎么回事,是哪里出错了?

第1个回答  2019-09-21

把unsigned char改成unsigned int,我用VS2019没问题的

追问

改了,也是不行

追答

是正常运行,得到结果错误;还是运行就出错了? 你那里的t6前面有定义吗

追问

我问题写错了,不是t6,应该是t2。改过来了。
运行没有出错。
我找到原因了:
其实
得到的结果: t2等于100,对了; t3=30 也对。是我看错了,我想得到的结果是t2=100,t3=10 的。计算t3时t2少加了40,,,,,

追答

-.-

本回答被提问者采纳
第2个回答  2019-09-21
完整的题目要求怎样,比如,参与运算的是什么样的数?
scanf("%1f%c%1f",&first_number,&character,&second_number);/*输入一个算式,如*/
printf("等于%1f\n", value);
中%1f的格式符抄错了?double类型输入/输出时要用%lf格式符(小写的L)。追问

比如说我要做 方波 的,t2是它的脉宽,

我用 t2=(t1/2)+40; t2输出不是100,波形不对。
我改成 t2=100; 它就对了。
是不是 t2=(t1/2)+40 这公式不能这样用??

第3个回答  2019-09-21
不是很明白你在说啥,t1/2+40=121/2+40=60+40=100追问

就是说 t2应该是等于100的,可输出不是100。
比如说我要做 方波 的,t2是它的脉宽,
我用 t2=(t1/2)+40; t2输出不是100,波形不对。
我改成 t2=100; 它就对了。
是不是 t2=(t1/2)+40 这公式不能这样用??

追答

不清楚什么情况,要不你试试
t2=(unsigned char)(t1/2)+(unsigned char)40;

相似回答