【发布时间】:2020-11-16 19:52:13
【问题描述】:
嗨,我正在学习 C 语言,我了解到 () 在 C 中比 && 具有更高的优先级,
但是当我执行以下程序时,a gard 它的价值虽然它已经放在() 之间,我能得到任何解释吗?
#include<stdio.h>
int main()
{
int a,b;
a=2,b=4;
printf("%d\n",0&&(a=b));
printf("%d",a);
return 0;
}
【问题讨论】:
-
&&是短路。 -
a没有被分配b的值,因为整个表达式只能是false,来自0 && ...,第二部分(a=b)没有被评估。 -
@black OP 很惊讶分配没有发生。这种改变会消除问题,而不是回答它。
-
@LEARNER 也适用于
||和?:。短路是大多数以运算符命名的语言的通用约定。 -
@black 否 我想测试
&&和()之间的优先级,如果a的值发生变化,则意味着()在C 中具有优先级,但第二个表达式@ 987654338@ 甚至没有被执行!
标签: c operator-precedence