面试题高手请进!
指出下面各个题目错误(只有一处)
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))才对 ^_^ "