【发布时间】:2015-08-07 18:37:53
【问题描述】:
#include <stdio.h>
int main()
{
int i=-3,j=2,k=0,m;
m = ++i || ++j && ++k;
printf("%d %d %d %d", i, j, k, m);
}
输出:
-2 2 0 1
为什么要表达m=++i||++j&&++k;不解析为m=++i||(++j&&++k),因为&&的优先级高于|| ??
【问题讨论】:
-
非常巧合的是,您的程序使用与重复问题完全相同的变量和值。 :)
-
@Barmar 它没有;副本根本不使用
|| -
啊,除了第一个
&&已更改为||之外,它们是相同的。 -
运算符优先级 != 求值顺序 && 从左到右的关联性 != 从左到右求值。
标签: c