发布网友 发布时间:2022-04-24 08:43
共5个回答
热心网友 时间:2022-06-18 03:08
a+b默认返回的是无符号数,如果这样得到的是一个有符号数 int c;c=a+b;当然c>0,但a+b>0因为结果作为一个无符号数已经溢出了,所以又加了65536结果变成一个正数了热心网友 时间:2022-06-18 03:09
a+b默认返回的是无符号数,如果这样得到的是一个有符号数 int c;c=a+b;当然c<0,但a+b>0因为a+b=-6带有符号,已经超出了无符号数所能表示的范围了,在内存中存储的16进制补码形式为FFFA,即65530>0。参考资料:来自上一个回答
热心网友 时间:2022-06-18 03:09
如果你定义int c=a+b;c=-6热心网友 时间:2022-06-18 03:10
反正我用int i=-7;unsigned int j=5;printf("%d",(i+j));热心网友 时间:2022-06-18 03:10
把无符号数转换为有符号数再相加。在这里,a+b=-6。则其与0的关系就显而易见了。