是不是if括号里的表达式里的范围不能写成两边夹的?这样是不是翻译不出来?
例如if(0<= x<=50)我写的它没翻译出来。
那这样的话是不是就要靠顺序来弥补了?(我看书上这样写的)就是先写出if(x<0)……再写if( x<=50)
哈哈哈,我看别人都没有回答原因,为什么不能这样写,我来说一下原因,因为结合性的原因,也就是计算他会按顺序执行的原因,0<=x<=50计算机并不会把这个式子看作x大于零且小与50。它会把这个式子看作(0<=x)<=50或者0<=(x<=50),根据系统的原因或者编译器不同,大部分看作第二个。也就是计算机会先判断括号内的,返回真或假,然后返回值再与括号外的比较,比如我输入51,51大于50,所以为假返回0,0大于等于0,所以整个表达式为真。正确写法就是别人回答的那个哦
两个表达式之间要有逻辑运算符。使他们变成一个整体即一个新的表达式。
if(条件1){
if(条件2)
}
等效
if(条件1&&条件2)
哈哈哈,您好。看到您的问题,我就想到了当初我第一次玩c语言,也是和您一样傻傻分不清楚。现在我给你讲讲区别吧,因为在c中我们学到了逻辑运算符,所以我们在判断语句中要使用逻辑运算符,而不是像我们正常做数学一样,写成您的那种模板
而应该写成
if(x>0&&x<50)
if(0<=x&&x<=50)
题主那样写是不可以的哦,计算机会先判断括号内的,返回真或假,然后返回值再与括号外的比较,照上面的写法能对,
你可以理解成(0<=x<=50)是两个条件要求呀。对于计算机来说无法满足我们人类的理解。既要又要,那么只能拆开并且用计算机语言将其关联使得计算机理解和识别(x>=0 && x<=50)。
可以这样写,编译器并不会报错,只不过if语句里的表达式和你想的预期不一样
这里涉及到操作符的结合性,<= 是左结合性的,并且关系表达式的结果为 0 或 1,所以会先执行 0 <= x 如果表达式为真,表达式的值为 1, 如果表达式为假,表达式值为 0,然后再执行 1 (或者0) <= 50得到 1 或者 0
不能写成连等的,正确写法:if(0<=x&&x<=50),&&是逻辑与符号,表示两个条件都满足才可以
是的这种两边夹的,应该这样描述x>=0&&x<=50才可以
试一下这样写
if(0<= x && x<=50)
可以使用逻辑符,if(x>=0 && x<=50)