C语言中无符号与有符号及相加问题
2018-08-05 09:59
2616 查看
C语言中无符号与有符号问题
unsigned char a[5] = { 12,36,96,128,182 };
a[]范围为0~256. 数组中数都有效。
char a[5] = { 12,36,96,128,182 };
a[]范围为-128~127. 数组中128和182均无效。
C语言中无符号数和有符号数相加问题
看个题:
#include<stdio.h> int main() { unsigned int a=6; int b=-20; printf("%d\n",a+b); (a+b)>6? puts(">6"):puts("<=6"); return 0; }
结果是:-14 >6
意想不到吧?
为什么结果这样呢?
原来有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数(即底层的补码不变,但是此数从有符号数变成了无符号数),比如上面 (a+b)>6这个比较运算,a+b=-14,-14的补码为1111111111110010。此数进行比较运算时,被当成了无符号数,它远远大于6,所以得到上述结果。
总结
以上所述是小编给大家介绍的C语言中无符号与有符号及相加问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
您可能感兴趣的文章:
相关文章推荐
- C语言中无符号数和有符号数相加问题
- C语言中无符号数和有符号数相加问题
- C语言中无符号数和有符号数相加问题 .
- C语言中无符号数和有符号数相加问题
- 无符号数运算问题——C语言隐式类型转换
- (面试题)请用C语言实现在32位环境下,两个无符号长整数相加的函数,相加之和不能存储在64位变量中
- c语言大数乘法各位相加问题
- 有关C语言中有符号/无符号数混合运算的小问题
- C语言无符号有符号比较问题总结
- 无符号数相减问题 C语言
- C语言struct位域符号问题
- C语言中如何判断多判断多个符号相连问题
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- 大数处理--大数相加减问题(c语言)
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- C语言中有符号数与无符号数相加
- 有关C语言中有符号/无符号数混合运算的小问题
- 有符号整数与无符号整数相加问题
- 有符号数和无符号数的相加问题
- c语言中的符号优先级问题