【发布时间】:2015-02-24 08:31:17
【问题描述】:
考虑以下代码 sn-ps 案例1:
int main()
{
int a;
a=printf("hello"),printf("joke");
printf("%d",a);
return 0;
}
案例2:
int main()
{
int a;
a=(printf("hello"),printf("joke"));
printf("%d",a);
return 0;
}
案例3:
int main()
{
int a;
a=10>8?(printf("hello"),printf("joke")):printf("hello");
printf("%d",a);
return 0;
}
案例4:
int main()
{
int a;
a=10>8?printf("hello"),printf("joke"):printf("hello");
printf("%d",a);
return 0;
}
我无法找出原因,当我在案例 2 中使用 paranthesis 时,我得到的输出为 hellojoke4,而没有使用 parantheis,我得到的输出为 hellojoke5。
根据输出,当我尝试使用三元运算符时,然后使用括号或不使用括号执行相同的表达式,返回 printf 语句的最后一个输出值,即 hellojoke4 ,那么行为在三元运算符的情况。 括号的存在如何影响逗号的工作,它的作用是像分隔符还是像运算符
【问题讨论】:
-
想想吧。在这种情况下,括号可以做什么?
-
int a=(1,2);,的优先级较低,因此a=2