昨天笔试的一道题

dclchj 2011-08-17 09:10:19
这道题我应该是挂了:

谈谈对下面代码片段的看法:

unsigned int ZERO = 0;
unsigned int COMPZERO = 0xFFFF;

大家先不要百度,试试能说出什么?
...全文
364 点赞 收藏 27
写回复
27 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fsp970219 2011-08-19
COMPZERO即使在16位下也是unsigned, 何来-1?
回复
请问您笔试的那家单位是不是南京的??
回复
AndyZhang 2011-08-19
这个和编译环境,机器都有关
回复
dclchj 2011-08-19
不是,是杭州的[Quote=引用 23 楼 xiaoxiao346691378 的回复:]
请问您笔试的那家单位是不是南京的??
[/Quote]
回复
dclchj 2011-08-19
[Quote=引用 21 楼 excited_lamb 的回复:]
引用 19 楼 dclchj 的回复:
我以为 COMP 是 compare ,写了些跟0比大小的东西。--!
说明我对 complement 不敏感,被测出来了。

你的意思是题目本身就没注释的嘛?
[/Quote]没有的,不过对方是嵌入式行业。
回复
jernymy 2011-08-17
unsigned int ZERO = 0;
unsigned int COMPZERO = 0xFFFF;

16位机子上COMPZERO是-1
32位机子上COMPZERO是0xFFFF;

如果正确的写法应该是
unsigned int COMPZERO = ~0;
回复
excited_lamb 2011-08-17
[Quote=引用 19 楼 dclchj 的回复:]
我以为 COMP 是 compare ,写了些跟0比大小的东西。--!
说明我对 complement 不敏感,被测出来了。
[/Quote]
你的意思是题目本身就没注释的嘛?
回复
dclchj 2011-08-17
这个是正解了^.^
[Quote=引用 9 楼 zmlovelx 的回复:]
unsigned int ZERO = 0;
unsigned int COMPZERO = ~0;
[/Quote]
回复
dclchj 2011-08-17
我以为 COMP 是 compare ,写了些跟0比大小的东西。--!
说明我对 complement 不敏感,被测出来了。
回复
dclchj 2011-08-17
[Quote=引用 14 楼 babilife 的回复:]
楼上都说了,你如果考得是16位单片机的话,这题还有考头

》16位机上木啥名堂
[/Quote]确实,对方是嵌入式相关的。
回复
excited_lamb 2011-08-17
/*1's complement of zero */

LZ你的这个注释到哪去了?怪不得我一开始没看懂
回复
modicum_lf 2011-08-17


unsigned int ZERO = 0;
unsigned int COMPZERO = 0xFFFF; // 变量名都告诉我们是0的补码了呀 ,你怎么还挂了,郁闷
/*1's complement of zero */

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:

unsigned int compzero = ~0;



回复
[Quote=引用 12 楼 excited_lamb 的回复:]

引用 7 楼 lxyppc 的回复:
如果没有上下文,只能猜测

变量名全大写,猜测是常量定义,可以加const在前面(假设是C++语境)
根据变量字面意思,COMPZERO猜测是complement zero的意思,即~0,写成unsigned int COMPZERO = ~ZERO;更加好一些

实际情况中可以根据上下文得到确切意义

为什么要这样,LZ的写法
int 如……
[/Quote]
是16位没问题。其他的会有问题。
比如32位,结果就是 0x0000FFFF,不是~0的0xFFFFFFFF
回复
楼上都说了,你如果考得是16位单片机的话,这题还有考头

》16位机上木啥名堂
回复
luofeng619 2011-08-17
顶一下
回复
excited_lamb 2011-08-17
[Quote=引用 7 楼 lxyppc 的回复:]
如果没有上下文,只能猜测

变量名全大写,猜测是常量定义,可以加const在前面(假设是C++语境)
根据变量字面意思,COMPZERO猜测是complement zero的意思,即~0,写成unsigned int COMPZERO = ~ZERO;更加好一些

实际情况中可以根据上下文得到确切意义
[/Quote]
为什么要这样,LZ的写法
int 如果16位会出问题?什么问题啊
回复
君恪 2011-08-17
[Quote=引用 9 楼 zmlovelx 的回复:]
unsigned int ZERO = 0;
unsigned int COMPZERO = ~0;
[/Quote]

顶一个
回复
konta 2011-08-17
~0
回复
unsigned int ZERO = 0;
unsigned int COMPZERO = ~0;
回复
excited_lamb 2011-08-17
这题目想考这个吧:

long x = (signed short)0xffff;

assert(x == 0xffff);


回复
加载更多回复
相关推荐
发帖
其它技术问题
创建于2007-09-28

3849

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2011-08-17 09:10
社区公告
暂无公告