请教一道位运算的题!

ojj198591 2007-01-02 09:51:00
一道填空题,填写运行结果:
int x;
(x&1)+(x|1)-(x%2)+(~(~0U<<2))=______;
请教高手结果是啥,详细的运算过程是怎样?
...全文
278 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cnwanglin 2007-01-04
  • 打赏
  • 举报
回复
U 是 unsigned 无符号类型的
ForestDB 2007-01-04
  • 打赏
  • 举报
回复
和LS的意见一致。
hustivan 2007-01-04
  • 打赏
  • 举报
回复
此题无意义,x没有初始化,会随着编译环境的不同赋予随机值
结果就是(x|1)+3,你所谓的稳定结果只不过是你那个环境赋予的
ojj198591 2007-01-02
  • 打赏
  • 举报
回复
题目的x就是没有赋值,但用tc调试又能得出稳定结果,结果按%d输出为914,另外最后挂号里的U代表什么意思?
a_b_c_abc6 2007-01-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

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧