用C语言单片机编程为什么总是用无符号的数据类型来定义??

如题所述

char型可以表示数的范围是-128到127,所占位数是8位
int型可以表示数的范围是-32768到32767,所占位数是16位
假如用有符号的数据类型表示,如果你要表示的数是128,那你就得定义int型,用了16位。
unsigned char型可以表示数的范围是0到255,所占位数是8位
int型可以表示数的范围是0到65535,所占位数是16位
假如用无符号的数据类型表示,如果你要表示的数是128,那你定义unsigned char型就可以了,只用了8位。
主要原因是:多数情况下我们都不需要运用到负数,单片机的内存是有限的,这样可以节省内存。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-27
1、使用无符号数可以获得更大的正整数取值范围
2、有些编译器对有符号数的处理比无符号数复杂,降低程序效率
3、对有符号数来说,有些操作,比如移位,不同的编译器实现细节不同,会造成移值问题

基于上述,除非必要,尽量使用无符号数。

更详细的信息,请参考 C语言缺陷与陷井
第2个回答  2011-07-27
会的,这跟编译器有关,因为具体到那款单片机,这种变量类型总是会受到硬件条件的约束。比如在430中,float ,double float都是四个字节的,而在标准c中double float是8个字节的!
另外,团IDC网上有许多产品团购,便宜有口碑
第3个回答  2011-07-27
因为程序没有涉及到复杂的算术运算的话 用无符号的就可以了 如果有带符号运算 那就用有符号的咯
第4个回答  2011-07-27
会的,这跟编译器有关,因为具体到那款单片机,这种变量类型总是会受到硬件条件的约束。比如在430中,float ,double float都是四个字节的,而在标准c中double float是8个字节的!
另外,虚机团上产品团购,超级便宜
相似回答