对c语言if条件句的思考

2019-10-15 19:16发布

我用的MDK5,定义char a;

a=-1;
printf("%d",a)的结果是255.
用if条件句时
if(a==-1)这个条件不会成立
而  if(a==255)条件才成立
今天遇到的,感觉很有意思,欢迎跟帖
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
K.O.Carnivist
1楼-- · 2019-10-15 20:39
“char”类型是字符类型,应该尽量避免做赋整数值和与整数值比较这样的操作。
如果要做算数操作请用“signed char”和“unsigned char”,这两个是整数类型。

然后才涉及到==运算符两边操作数的类型转换,和常数“-1”的数据类型的问题。
密耳
2楼-- · 2019-10-15 22:24
 精彩回答 2  元偷偷看……
北戴河长春
3楼-- · 2019-10-16 03:55
密耳 发表于 2017-1-4 15:16
这要有意思吗?明明是你C的基本都没学好。。。。。。。。。。。

是不是所有的if条件句不能为负值
hyghyg1234
4楼-- · 2019-10-16 04:54
C不存在负数小数,判断负数看最高位。
北戴河长春
5楼-- · 2019-10-16 08:25
既然if(a==-1)不成立,那if(a<0)这样的语句是否成立呢
操作系统
6楼-- · 2019-10-16 13:02
可能是你的编译器默认了char 为无符号的类型..  一般要是想用有符号的.请使用 signed char 或者 直接 int来声明.int 默认是有符号的.局部变量最好使用寄存器一样的宽度.比方说,STM32程序,建议 普通的局部变量直接使用 int.或者 unsigned int

一周热门 更多>