大华面试题解决办法

大华面试题
unsigned int a = 32;
int b = -6;
unsigned int c = a + b;

C = ?为什么?


去大华面试的时候被问到的问题,被鄙视了。

------解决方案--------------------
我只想告诉你计算机只认识补码,只会二进制加法.

再想告诉你, 有没有符号是编译器的认知, 与计算机没有关系.

所以, 看代码注释 : 

C/C++ code
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
        // 以下所有变量与计算, 均与有无符号无关.
        unsigned int a = 32; // 32 的二进制: 0x 00 00 00 20
        int b = -6; // -6 的二进制 : 0x 00 00 00 06 --> 0x ff ff ff fa
        unsigned int c = a + b; // c = 0x 00 00 00 20 + 0x ff ff ff fa = 0x  00 00 00 1a

        printf("%u\n", c); //26

        return 0;
}

------解决方案--------------------
最后补充下,楼主一定要看到啊,刚忘跟你说+1了,在b进行反转的时候一定要记得+1....