首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

面试题

2012-02-05 
面试题高手请进!指出下面各个题目错误(只有一处)1指出下列程序的错误VOIDB(ULONG*p){*p66*10000return}

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

热点排行