Jjkkll987987 发表于 2018-12-31 23:21:33

unsigned的用法

老哥们,unsigned不是无符号整形的意思么#include<stdio.h>
    int main() {
      int a, b, c;
      unsigned u,d;
      a = 12;
      b = -24;
      u = -10;
      c = a + u;
      d = b + u;
      printf("u + a = % d, b + u =%d\n",c, d);
编译结果u+a=2,b+u=-34
我把d定义成了无符号整形,为什么输出的结果还带符号(-)
还有就是我也把u定义成了无符号整形,为什么u还是在里面是以(-10)的形式运算,不该是以(10)的形式进行计算么

ba21 发表于 2019-1-1 15:58:55

无符号类型和int类型之间相加运算,可以总结为,先将无符号的数u先和int类型的i相加,如果算出的结果在unsigned之间的话(0~2147483647*2+1)之间的话,则结果就是这个范围里的数,如果,他们相加的数,是负数,或者超出这个范围,则最后的结果转化成无符号类型。
页: [1]
查看完整版本: unsigned的用法