黑马程序员技术交流社区
标题:
一道C语言条件运算符运算顺序问题
[打印本页]
作者:
胡铭
时间:
2014-4-26 13:00
标题:
一道C语言条件运算符运算顺序问题
本帖最后由 胡铭 于 2014-4-27 16:43 编辑
已知a=1,b=2,c=3,d=4;执行表达式a<b?a : (d>c)?b=100:c后b的值是多少?
作者:
兰闻天
时间:
2014-4-26 13:28
本帖最后由 兰闻天 于 2014-4-26 13:30 编辑
b =2 ,你可以自己去运行一下,这个是a<b为真,执行的是a,再冒号后面的都不执行了。如果改成a>b,那会执行(d>c)?b=
100
:c,判断d>c真假,真执行b=100,假执行c;
作者:
ios_fce
时间:
2014-4-26 13:34
这个程序运行不了!!!
作者:
Invoker
时间:
2014-4-26 13:38
这个语句是从左到右进行判断的,首先判断A<B 这个为真 只执行a 后面不做判断
作者:
stevenzhao1977
时间:
2014-4-26 13:47
b=2;
我的理解是a<b 成立,执行 : 之前的表达式。
但是 书上讲 三木运算符是从右至左结合。==》 盼高手解惑
作者:
m573555543
时间:
2014-4-26 20:13
这道题出错了 。
1.先要弄清楚关系运算<的优先级比? :运算的优先级高。
2.要知道?:运算符的结合性是右结合。即:自右向左算。
备注: 运算符的优先顺序:
一共有十五个优先级: 1 () [] . ->2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
从右至左
3 * / %
4 + - 5 >> << 6 > >= < <= 7 == != 8 & 9 ^ 10 | 11 &&12 ||13 ?:
从右至左
14 = += -= *= /= %= |= ^= &= >>= <<=
从右至左
15 ,就着多吧 结合性:2 13 14 是从右至左 其他都是 从左至右
作者:
夏应斌
时间:
2014-4-26 20:16
这个b就是等于2,就是已知中赋值,先执行a<b,如果条件成立,直接返回a的值;如果不成立则接着向右进行,一直输出数值为止,b=100或者是3,
作者:
251638256
时间:
2014-4-26 20:21
前面的已经满足了 嵌套里面的三元表达式不会指向
so b = 2
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2