我正在看某人的代码而他们做了:
if ( myNum > (num1 && num2 && num3) )
...当myNum大于num1,num2和num3时执行代码。这会有用吗?
编辑:谢谢你们。我认为它不会起作用,但我不是专家,所以我想我会问那些人。
答案 0 :(得分:4)
假设值的类型为int
,则在C或C ++中首先评估
(num1 && num2 && num3)
作为
(num1 !=0) && (num2 != 0) && (num3 != 0)
结果将是C ++中的true
或false
,以及C中的1或0。
然后,您会将myNum
与该结果进行比较。
答案 1 :(得分:3)
不 - 至少在C#或Java中肯定没有。你想要:
if ((myName > num1) && (myNum > num2) && (myNum > num3))
(这可能你不需要括号 - 我永远不会记住运算符优先级。)
它不能用Java或C#编写,因为&&
是 Boolean 操作数的运算符,带有 Boolean 结果。它可能会用不太强类型的语言编译/运行,但我高度怀疑它会在任何主流语言中产生预期效果。
答案 2 :(得分:2)
不,那不行。为什么它不起作用取决于语言,但(num1&& num2&& num3)将首先用您标记问题的所有语言进行评估。提供(num1&& num2&& num3)实际上编译和评估某些东西,然后你将得到myNum>东西。
答案 3 :(得分:1)
标签中没有任何语言。好吧,我认为它可能适用于C和JavaScript,但肯定不是预期的。
答案 4 :(得分:1)
如果myNum,num1,num2和num3是带有运算符>的特殊类型,它可能在c ++中有效。和&&超载。但它可能不值得创建这样一个可以解决这个问题的类。
答案 5 :(得分:0)
至少在C:http://codepad.org/R9IP0ZOr
中这是不正确的int main()
{
int myNum = 10;
int num1,num2,num3 ;
num1 = 15;
num2 = 16;
num3 = 17;
if ( myNum > (num1 && num2 && num3) )
printf("%s","YES|GREATER");
else
printf("%s","NO|SMALLER");
} // prints "YES|GREATER" even though all numbers are greater than myNum
正确的陈述应该是:
if( (myName > num1) && (myNum > num2) && (myNum > num3) )
{
}
答案 6 :(得分:0)
它是有效的JavaScript代码,但可能与编写它的人的预期不同。
它实际上最终会评估if(myNum > num3)
,因为(num1 && num2 && num3)
只会返回num3
答案 7 :(得分:0)
或者更有意思:
if(Num > Math.Max(Num1,Math.Max(Num2,Num3)))