通常情况下,如果我在
if
语句后面只跟了一个语句,那么就不需要使用大括号。例如:if (condition) statement1; statement2;
statement2
将始终执行,但在这里并没有发生:
for (j = 0; j < size; j++) {
if (size % 2) if (j % 2) *(minmat + j) *= -1.0;
else {
…
}
}
else
语句应该与第一个if
语句相关联,但实际上它与第二个语句相关联。为了纠正这个问题,我必须这样做:
for (j = 0; j < size; j++) {
if (size % 2) { if (j % 2) *(minmat + j) *= -1.0; }
else {
…
}
}
但是为什么会发生这种情况呢?在第一种情况下,第二个if
语句被“隐含”在括号内,为什么还会出现这样的问题呢?
else与其语法允许的最近的前置if相关联。
- EOF{}
(即使里面只有一条语句)。 - ouah