gpt4 book ai didi

c - C 中的运算符优先级?

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

int x=12;
int y=7;
int z=19;
int sum;

sum = ++x >= y * 2 || y % 2 && z++ % 2;

我对运算符优先级有点困惑?编译器将在上面的代码中读取的第一个条件是什么?它会首先评估 y % 2 && z++ % 2 因为 && 优先于 || 还是编译器仍然会从从左到右短路如果在最左边 ++x >= y * 2 是真的吗?即编译器将以下列方式读取代码吗?

sum = (++x >= y * 2 || y % 2 )&& z++ % 2;

最佳答案

你的表情分组为

(++x >= (y * 2)) || ((y % 2) && (z++ % 2))

并将其分配给 sum .这是由 C 的语法指定的。

另请注意 || 的右侧如果左侧是 1,则计算: 这意味着 z在这种情况下不会增加。

  1. 为避免疑义,++xx值, 和 z++z值.

  2. 还请注意,因为 ||是一个序列点,即使你写了x++,表达式也会被很好地定义在右侧,而不是 z++ .

  3. 调用此 sum 的结果是混淆练习。

关于c - C 中的运算符优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47830111/

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