问一下为什么会输出结果是4 5 99

img

if后面没有括号,所以两个if对应的语句只有下面的一条,剩下的两条是必定执行的

img

如果你想要达到交换目的,if后面三条语句外面套一层大括号即可
有帮助望采纳~

因为你if语句后面加的是';',所以if语句只做了下面第一条,后两条怎么样都后做。
可以改成逗号','连接:

#include <cstdio>
int main() {
    int a = 3, b = 4, c = 5, t = 99;
    if (b < a && b < c)
        t = a, a = c, c = t;
    if (a < b && b < c)
            t = b, b = a, a = t;
    printf("%d,%d,%d", a, b, c);
    return 0;
}

或者用大括号'{}'连接:

#include <cstdio>

int main() {
    int a = 3, b = 4, c = 5, t = 99;
    if (b < a && b < c) {
        t = a; a = c; c = t;
    }
    if (a < b && b < c) {
        t = b; b = a; a = t;
    }
    printf("%d,%d,%d", a, b, c);
    return 0;
}

if语句下面的代码没有加大括号时,不管条件是否成立都会执行下面的代码