面试题高手请进!
指出下面各个题目错误(只有一处)
1指出下列程序的错误
VOID B(ULONG *p)
{
*p=66*10000;
return;
}
VOID A()
{
unsigined short a = 10*1000;
B((ULONG*)(&a));
return;
}
[解决办法]
unsigined 打错字 ^_^
unsigned short a = 10*1000;
[解决办法]
*p = 66*10000;
这里错
unsigned short
2 byte
0 ~ 65535
66 * 10000 = 660000 > 65535
比unsigned short的范围大了
[解决办法]
a是两个字节,却要按四个字节赋值, 当然错了
[解决办法]
*p=66*10000;//句,因ULONG *p 就是定的,然是行到才造成越界。
是句:B((ULONG*)(&a)); 不程范,制使用不用的函。
[解决办法]
PPower(月亮光光,照地堂) 正确
B((ULONG*)(&a))才对 ^_^ "