c++条件表达式"x<=20?10:30"为什么表达式一不是20而是“x <=20",为什么“x=a <...
c++条件表达式"x<=20?10:30"为什么表达式一不是20而是“x<=20",为什么“x=a<b?a:b"中表达式一就是a<b而不是x=a<b啊,求高手指点...
c++条件表达式"x<=20?10:30"为什么表达式一不是20而是“x <=20",为什么“x=a <b? a:b "中表达式一就是a <b 而不是x =a<b啊,求高手指点
展开
4个回答
展开全部
晕。LZ,不能光看一个地方。看整行。
x<=20?10:30 是条件表达式。 这个等号用来比较。
x=a <b? a:b 是一个赋值语句。 a <b? a:b 是一个条件表达式。等价于
x= (a <b? a:b) 。这个等号用来赋值的。
x<=20?10:30 是条件表达式。 这个等号用来比较。
x=a <b? a:b 是一个赋值语句。 a <b? a:b 是一个条件表达式。等价于
x= (a <b? a:b) 。这个等号用来赋值的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
?:是C++中的三元或者说三目操作符,这个你应该知道了,那么你也应该知道操作符是有优先级的。
<=及<是关系操作符,优先级是6,?:是条件操作符,优先级是14,而=是赋值操作符,优先级是15,那么你自己也可以判断出来了。
x<=20?10:30 中
x<=20 是6的优先级,大于后面的?和: 所以先计算它
x=a <b? a:b 中
= 是15的优先级 是最后计算的,=右边的式子a <b? a:b 中,<的优先级是6,?和:的优先级是14,那么就先计算a <b。
恩,补充一下,这个优先级的数字是我自己排出来的,跟官方的可能不同,不要在意数字,你只要知道<和<=的优先级大于?: 而?:又大于= 那么前面的问题就解决了。
给你官方的操作符优先级及结合性记忆方法
===================
记忆方法:
--摘自《C语言程序设计实用问答》
问题:如何记住运算符的15种优先级和结合性?
解答:C语言中运算符种类比较繁多,优先级有15种,结合性有两种。
如何记忆两种结合性和15种优先级?下面讲述一种记忆方法。
结合性有两种,一种是自左至右,另一种是自右至左,大部分运算符的结合性是自左至右,只有单目运算符、三目运算符的赋值运算符的结合性自右至左。
优先级有15种。记忆方法如下:
记住一个最高的:构造类型的元素或成员以及小括号。
记住一个最低的:逗号运算符。
剩余的是一、二、三、赋值。
意思是单目、双目、三目和赋值运算符。
在诸多运算符中,又分为:
算术、关系、逻辑。
两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。再细分如下:
算术运算符分 *,/,%高于+,-。
关系运算符中,〉,〉=,<,<=高于==,!=。
逻辑运算符中,除了逻辑求反(!)是单目外,逻辑与(&&)高于逻辑或(||)。
逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)高于按位半加(^),高于按位或(|)。
这样就将15种优先级都记住了,再将记忆方法总结如下:
去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中。
<=及<是关系操作符,优先级是6,?:是条件操作符,优先级是14,而=是赋值操作符,优先级是15,那么你自己也可以判断出来了。
x<=20?10:30 中
x<=20 是6的优先级,大于后面的?和: 所以先计算它
x=a <b? a:b 中
= 是15的优先级 是最后计算的,=右边的式子a <b? a:b 中,<的优先级是6,?和:的优先级是14,那么就先计算a <b。
恩,补充一下,这个优先级的数字是我自己排出来的,跟官方的可能不同,不要在意数字,你只要知道<和<=的优先级大于?: 而?:又大于= 那么前面的问题就解决了。
给你官方的操作符优先级及结合性记忆方法
===================
记忆方法:
--摘自《C语言程序设计实用问答》
问题:如何记住运算符的15种优先级和结合性?
解答:C语言中运算符种类比较繁多,优先级有15种,结合性有两种。
如何记忆两种结合性和15种优先级?下面讲述一种记忆方法。
结合性有两种,一种是自左至右,另一种是自右至左,大部分运算符的结合性是自左至右,只有单目运算符、三目运算符的赋值运算符的结合性自右至左。
优先级有15种。记忆方法如下:
记住一个最高的:构造类型的元素或成员以及小括号。
记住一个最低的:逗号运算符。
剩余的是一、二、三、赋值。
意思是单目、双目、三目和赋值运算符。
在诸多运算符中,又分为:
算术、关系、逻辑。
两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。再细分如下:
算术运算符分 *,/,%高于+,-。
关系运算符中,〉,〉=,<,<=高于==,!=。
逻辑运算符中,除了逻辑求反(!)是单目外,逻辑与(&&)高于逻辑或(||)。
逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)高于按位半加(^),高于按位或(|)。
这样就将15种优先级都记住了,再将记忆方法总结如下:
去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中。
参考资料: http://user.qzone.qq.com/1014445863/blog/1326339406
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以加括号 达到你需要的顺序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言中惟一的双目运算符? :的语法是
(逻辑表达式) ? <条件表达式的值为真取我> : <条件表达式的值为假取我>
比如返回两个数中的较大者可以这样写: return (a > b) ? a : b;
对于x<=20?10:30,意思是,如果x <= 20,该表达式的值是10,否则为30。
对于x=a <b? a:b,是将a,b中的较小者赋给x,语法上、逻辑上没有任何问题。
以上两行的区别在于条件表达式的值是否赋给一个变量。
(逻辑表达式) ? <条件表达式的值为真取我> : <条件表达式的值为假取我>
比如返回两个数中的较大者可以这样写: return (a > b) ? a : b;
对于x<=20?10:30,意思是,如果x <= 20,该表达式的值是10,否则为30。
对于x=a <b? a:b,是将a,b中的较小者赋给x,语法上、逻辑上没有任何问题。
以上两行的区别在于条件表达式的值是否赋给一个变量。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询