我看到的代码看起来像是在尝试执行一个没有实际 if 的 if 语句,我很困惑它实际上在做什么。例如,
int* value;
int thisValue = 0;
int checkedValue = 1;
*value = thisValue == checkedValue
这实际上是在执行没有 if 的 if 语句吗?
最佳答案
这只是计算一个 bool 表达式。并将其存储在 value
指向的任何内存位置(在您的特定代码段中 value
未分配,因此行为未定义)。
if
允许您根据 bool 表达式的值执行不同的代码。
例如,
if (a == b) {
printf("a and b are the same\n");
}
行为相同:
int same = (a == b);
if (same) {
printf("a and b are the same\n");
}
尽管第一个通常更清晰,除非您有某种理由希望在 if 语句之后使用 same
变量。但第二种更接近 C 代码在编译时将生成的机器指令。
尽管像 ==
这样的 bool 比较运算符经常在 if
语句中使用,但没有什么可以强制只在那里使用它们.您可以在代码中的任何位置使用 ==
运算符来生成 bool 表达式,就像您可以在任何位置使用 +
运算符来生成数值表达式一样。
关于c - 没有if的if语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22547396/