读书人

大华面试题解决办法

发布时间: 2012-04-13 13:50:24 作者: rapoo

大华面试题
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....

读书人网 >C++

热点推荐