gpt4 book ai didi

c - 后缀 prefix++ 和二进制 & 运算符的优先级

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

我对 C 中的后缀和前缀运算符优先级感到困惑,任何帮助和提示都会有所帮助。

我会在这里粘贴我的测试代码:

#include <stdio.h>

int a = 0;

int main(int argc, char *argv[])
{
if (++a & 0x01) // prefix version
// if (a++ & 0x01) // postfix version
{
printf("++ first\n");
}
else
{
printf("& first\n");
}
return 0;
}

我现在可以理解,在postfix版本中,虽然postfix++有更高的优先级,但是a++会在这里返回0&0x01 并将在此表达式后增加 a 的值。

但是我无法理解的是,为什么在前缀版本中,为什么首先评估++a?运算符优先级表表明prefix++&具有相同的优先级,而且它们的结合性是从右到左。这是否意味着应该首先评估 &

编辑:我正在使用的图表:C Operator Precedence Table

最佳答案

再次检查您的优先级表。我相信您可能对一元地址运算符 & 和二进制按位与运算符 & 感到困惑。

参见:http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence

通过这种解释,您可以在应用按位与之前递增 a

关于c - 后缀 prefix++ 和二进制 & 运算符的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214167/

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