我使用 C 语言,代码如下:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int num1=0;
int res = ++num1 && num1++;
printf("%d\t%d\n",num1,res);
}
在上面的代码中,我得到的输出为2 1
. 我认为输出应该是2 0
.
如有错误请指正,为解决此语句,由于优先级最高,首先执行 num1++(0),然后执行 ++num1(2),最后执行 &&,因为它具有最低优先级。
请评论此语句是如何执行的。
在一些教程中,我发现后缀 ++ 和前缀 ++ 具有相同的优先级,但如果这是真的,那么根据关联规则再次 num1++ 应该首先执行(从右到左),这应该再次导致答案为2 0
.