VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 931|回复: 6

请教一道位运算的题!

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-16 15:40:01 | 显示全部楼层 |阅读模式
一道填空题,填写运行结果:
int x;
(x&1)+(x|1)-(x%2)+(~(~0U<<2))=______;
请教高手结果是啥,详细的运算过程是怎样?
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-21 15:00:02 | 显示全部楼层
int x=0;//没有初始化的x,讨论没有意义,所以下面的讨论假设x初始化为0

(x&1)==0 根据逻辑AND
(x|1)==1 根据逻辑OR
(x%2)==0 相当于(x&1)
(~(~0U<<2))==3  0取反,所有bit为1,然后往左移两位,则后面两个bit为0,再取反,则前面的1全部为0,后面得到两个1,换算为10进制为3
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-21 16:00:02 | 显示全部楼层
题目的x就是没有赋值,但用tc调试又能得出稳定结果,结果按%d输出为914,另外最后挂号里的U代表什么意思?
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-10 17:45:01 | 显示全部楼层
U 是 unsigned 无符号类型的
回复

使用道具 举报

0

主题

1

帖子

0.00

积分

新手上路

Rank: 1

积分
0.00
发表于 2020-3-10 23:23:10 | 显示全部楼层
这么复杂,是面试吧,面试才会有变态的题目,
回复

使用道具 举报

0

主题

10

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-21 19:45:02 | 显示全部楼层
此题无意义,x没有初始化,会随着编译环境的不同赋予随机值
结果就是(x|1)+3,你所谓的稳定结果只不过是你那个环境赋予的
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-4-2 09:00:02 | 显示全部楼层
和LS的意见一致。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表