我正在尝试将一段伪代码转换为 C 代码,并且我有类似的条件
if (-4 <= X <=8)
THEN {Do Something}
else
{Do something else}
if 语句中的语法是否有效?可以在逻辑条件中的变量之前放置一个常数来检查真值吗?
我正在尝试将一段伪代码转换为 C 代码,并且我有类似的条件
if (-4 <= X <=8)
THEN {Do Something}
else
{Do something else}
if 语句中的语法是否有效?可以在逻辑条件中的变量之前放置一个常数来检查真值吗?
在 C 中,您不能编写类似的条件
if (-4 <= X <= 8) {
// ...
} else {
// ...
}
相反,您必须将其拆分为两个单独的检查:
if (-4 <= X && X <= 8) {
// ...
} else {
// ...
}
这段代码现在完全没问题了——你可以在运算符的任一侧拥有任何你想要的<=
操作数。
是的,您可以将常量作为 C 中逻辑检查的左侧参数。
但是,您列出的伪代码需要拆分为两个表达式:
if ((-1 <= X) && (X <= 8))
旁注:许多开发人员更喜欢“左侧常量”样式的逻辑语句,因为它会在某些容易出错的比较中导致编译错误。例如:假设您想评估if (X == 3)
但不小心输入了if (X = 3)
. 后者是一个完全有效的 C 表达式,因为赋值操作返回 True。如果你使用“左侧常量”样式:
if (3 = X)
会导致编译错误,从而节省大量时间。
不; 那是行不通的。
-4 <= X
是 0 或 1,始终小于 8。
if 语句中的语法是否有效?可以在逻辑条件中的变量之前放置一个常数来检查真值吗?
不确定语法是否正确,但在相等\不等式运算符的测试之前放置一个文字常量是一种常见的做法。喜欢:
if(7==x) {...} else {...}
有些程序员会这样做,因为如果你不小心忘记了相等\不等式\greater then 运算符测试中的第二个 '=' 符号,你会收到将变量赋值给文字,而不是测试,例如:
if(x=7) //danger! you're assigning to variable 'x' value of '7',
//which will return true, as a side-effect
//now (x==7)==true
此外,C 语言没有“THEN”关键字,该语言的发明者认为它是多余的——这显然很容易理解,如果你在 if 测试之后有一些东西,那么你可能会执行这段代码。喜欢
if(SOME_MAGIC_CONST==a)
{
//There couldn't be anything else at all! else can't follow if immediately, so...
}
else {
//yep, keyword 'THEN' is redundant...
}
if 语句中的语法是否有效?
语法是有效的,但它不会做你所期望的。<=
是 C 中的正常左结合二元中缀运算符,所以
-4 <= X <= 8
解析为
(-4 <= X) <= 8
的结果<=
是一个布尔值,它 C 表示为1
/ ,并且0
两者都为真。0 <= 8
1 <= 8
要得到你想要的效果(检查是否X
在一定范围内),你需要多个单独的比较结合&&
.
可以在逻辑条件中的变量之前放置一个常数来检查真值吗?
是的。您还可以比较两个变量或两个常量或几乎任何东西。
<=
,<
和所有其他比较都是通用运算符。它们的操作数可以是您想要的任何表达式。(在语法上,即;为了使代码有意义,两个操作数也必须具有相同的类型。5 <= "abc"
是类型错误。)