所以我有以下程序:

# 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/

10-11 23:58
查看更多