这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » C语言无符号数和有符号数比较的问题

共6条 1/1 1 跳转至

C语言无符号数和有符号数比较的问题

高工
2013-12-01 15:52:08     打赏

    在复制别人代码的时候没有注意,在for语句中采用了无符号数和有符号数相比较的语句,编译过程中出现了警告,并没有太在意,单击运行,至此就出现了致命的错误,如下图所示:

编译警告:

运行错误:

   此时for语句失去了判断的功效,确切的说是“n>=0”成了“恒成立”,直接进行后面的”n--”了,以至于使得i>8的情况出现。

下面总结一下:

   有符号数与无符号数之间运算问题,这个问题测试是否懂得C语言中的整数自动转换原则。当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型 。因此,从这个意义上讲,无符号数的运算优先级要高于有符号数,这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。

   而对于浮点数来说,浮点数(float,double)实际上都是有符号数, unsigned 和signed前缀不能加在float和double之上,当然就不存在有符号数根无符号数之间转化的问题了




关键词: C语言     无符号数比较    

高工
2013-12-01 16:02:19     打赏
2楼

关于预处理器标识#error的作用:

格式:#error  error message 

在编译程序时,只要遇到#error就会生成一个编译错误提示消息,并停止编译。

运行结果如下:



高工
2013-12-03 08:58:19     打赏
3楼
就是您这意思,意在表明有符号数和无符号数在进行比较的时候会统一转化为无符号数,这么一来,如果和零比较的话就永远的大于等于零了,嘿嘿嘿

高工
2013-12-03 11:35:13     打赏
4楼
可以一试,我觉得应该可以

高工
2013-12-03 11:36:02     打赏
5楼
是啊,发现通信数据不对,所以才捋了捋

高工
2013-12-18 09:05:42     打赏
6楼
是啊,有符号数在和无符号数进行比较的时候自动类型转换了,还是学的不到位,多谢指点啊

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]