所以我有以下程序:
# define swap(a,b) temp=a; a=b; b=temp;
int main() {
int i, j, temp;
i = 5;
j = 10;
temp = 0;
if (i > j)
swap(i, j);
printf("%d %d %d", i, j, temp);
}
这将导致:
10, 0, 0
我不明白为什么
if (5 > 10)
条件被执行为“true”,即使5不大于10。 最佳答案
这将教会您尽可能避免使用宏,并且始终在控制流语句中使用大括号。
宏展开后,您的代码将显示:
if (i > j)
temp = i;
i = j;
j = temp;
看到问题了吗?
关于c - C:在if语句中将错误条件解释为true,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21369971/