2个面试题请教
这些题都是我考古得来的,
1. 有2个unsigned变量是32位 a,b 相加后,超出unsigned类型。要求你写个函数实现相加并把结果高地址放入char *ch,低地址放入char *cl
请问什么是高地址/低地址?
2. Which is the correct output for the following code
double dArray[2] = {4, 8}, *p, *q;
p = &dArray[0];
q = p + 1;
cout < < q – p < < endl;
cout < < (int)q - (int)p < < endl;
为什么(int)q - (int)p ==8?
[解决办法]
2:)为什么(int)q - (int)p ==8?
这里他把2个地址相减,因为sizeof(double) 是8, 所以输出是8。
[解决办法]
由于是 + 法,
所以,
即使溢出, 也就是溢出一个 高位1 而已,
所以 char *ch 为1,
char *cl 为 a+b(高位溢出就剩下低位) 就好了