这两个陈述之间有什么区别。当我交替使用这些时,我会得到不同的结果。我希望有人可以帮我解释一下。那么,这是什么区别......
else if ( ( elecshow ==2,3,4,5,6,8,9,10,16 ) )
这......
else if ( ( elecshow ==2 ) || ( elecshow ==3 ) || ( elecshow ==4 ) || ( elecshow ==5 ) || ( elecshow ==6 ) || ( elecshow ==8 ) || ( elecshow ==9 ) || ( elecshow ==10 ) || ( elecshow ==16 ) )
我知道这很简单,但您的意见不胜感激。
答案 0 :(得分:2)
检查comma operator实际上做了什么。您的第一个代码段相当于
else if ( ((((((((elecshow ==2),3),4),5),6),8),9),10),16 )
或(如果我们假设评估elecshow
不投掷等)只是
else if ( 16 )
您需要使用第二个,尽管您可以将其缩短为类似
else if (elecshow > 1 && elecshow <= 10 && elecshow != 7 || elecshow == 16)
答案 1 :(得分:2)
计算每个操作数(从左到右)并返回最后一个操作数的值
结合==
higher precedence而不是,
的事实,这里发生的事情是评估elecshow ==2
,然后是3
,然后{{1} },...最后是4
。
返回最后一次评估,16
为真值,执行将进入16
。
结果与
不同else if
只是因为它是一个完全不同的运营商!