gpt4 book ai didi

与 C 中的移位和算术运算符的优先级混淆

转载 作者:太空宇宙 更新时间:2023-11-04 05:33:00 24 4
gpt4 key购买 nike

我不熟悉 C 中的移位运算符,我对它们感到困惑。

int x = 2, y, z = 4;
y = x>>2 + z<<1; // this gives the output 0
y = (x>>2) + (z<<1); // this gives the output 8

我预计两个输出都是 8,但第一个输出为零。为什么会这样?

最佳答案

这个

y=x>>2 +  z<<1; //this gives the output 0

评估为

y=( x>>(2 +  z)) << 1;
^^^^this performed first i.e 6, next x>>6 which is 0 and then 0<<1 is zero

因为运算符优先级。请参阅 operator 的手册页;它表示 + 的优先级高于移位运算符。

还有这个

y=(x>>2) + (z<<1);  //this gives the output 8 

定义明确; () 具有最高的优先级。

关于与 C 中的移位和算术运算符的优先级混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53962205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com