A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 紮西诺尔布 中级黑马   /  2015-4-12 20:55  /  1214 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>
main()
{
    int a=5, b=4, c=6, d;
    printf(”%d\n”, d=a>b? a>c?a:c :b);
}
结果???如何运算的,请讲解!!!!!

10 个回复

倒序浏览
赋值运算符的优先级比三目运算符低,而三目运算符为右结合性,所以这个表达式可以理解为这样:
d = ( a > b ? (a > c ? a : c) : b )
所以最后结果应该为6
回复 使用道具 举报
a>b?(a>c?a:c):b按照这个顺序:先判断a>b是不是真,结果是真,就要去找所对应的最后一个":",最后一个冒号前面&&第一个问号后面的内容就是当前面a>b为真时所取得值
回复 使用道具 举报
运算符的优先级(从高到低)
括号
正负号
自增自减,非
乘除,取余
加减
移位运算
大小关系
相等关系
按位与
按位异或
按位或
逻辑与
逻辑或
条件运算
赋值运算
位赋值运算
回复 使用道具 举报
你这样写,别人怎么看,实际开发中都是带小括号的或者分开写,没有这样写的...
回复 使用道具 举报
会被炒鱿鱼的
回复 使用道具 举报
d = ( a > b ? (a > c ? a : c) : b )先判断a>b的真假,因为a>b,所以表达式的值是(a > c ? a : c) .然后这个值是多少呢?判断a>c的真假,因为wei'zhen为假,所以返回c的值,所以表达式的值为c的值,所以d=6!!
回复 使用道具 举报
d=a>b?(a>c?a:c) :b    结果d = c =6
回复 使用道具 举报
LoseMyCat 发表于 2015-4-12 22:33
赋值运算符的优先级比三目运算符低,而三目运算符为右结合性,所以这个表达式可以理解为这样:
d = ( a > b ...

非常感谢!!!!!you are great!!!!!!!!!!!继续努力加油吧!!!!!!
回复 使用道具 举报
可以从后往前推,b前有冒号,但是c前也有冒号,所以(a>c?a:b)是一个整体
回复 使用道具 举报
这个以后用的少,会了就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马