C语言中无符号与有符号及相加问题

C语言中无符号与有符号及相加问题,第1张

概述这篇文章主要介绍了C语言中无符号与有符号及相加问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

C语言中无符号与有符号问题

unsigned char a[5] = { 12,36,96,128,182 };

a[]范围为0~256. 数组中数都有效。

char a[5] = { 12,182 };

a[]范围为-128~127. 数组中128和182均无效。

C语言中无符号数和有符号数相加问题

看个题:

#include

int main()

{

unsigned int a=6;

int b=-20;

printf("%dn",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语言中无符号与有符号及相加问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1264839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存