朝闻道夕
2015-12-19 13:37
原题: 设有int x=1,y=0;则以下表达式的值为 x-->(y+x)?10:12.5>y++?'A':'Z'
#include
int main()
{
int a,x,y;
x=1;
y=0;
a=(x-->(y+x)?10:12.5>y++?'A':'Z');
printf("%d\n",a);
return 0;
}
答案是10,可为什么wo de 编程输出的是65, 请问错在哪里了?
分解一下,a=(x-->(y+x)?10:12.5>y++?'A':'Z');
前半部分
x-->(y+x)?10:12.5 //这里结果为多少 x--先赋值后运算,这时候x=1,(y+x)=1,那x-->(x+y)则不成立,则返回值 为12.5
后半部分
12.5>y++?'A':'Z'); //y++先赋值后运算 所以这时候y值依旧为0,所以12.5>y++返回true,最后结果为A的ASCLL 码对应的值 65
所以骚年,你的结果是对的?谁告诉你正确答案是10的?
是65啊 - -
哎哟 看错了 是没有()的高 不是-->
结果是65 三目运算符的优先级 没有-->和()的高
C语言入门
926938 学习 · 21533 问题
相似问题