这里输出的结果是 1-2;为什么不是1


#include <stdio.h>

int main() {
    int x = 3;
    do {

        printf("%d", x -= 2);
    } while (!(--x));
    return 0;
}

第一次循环输出1,x值为1,然后while处理先--x使得x变为0,!0是成立的,所以继续循环,输出-2,此时--x为-3,!(-3)不成立,结束

输出的结果是 1-2啊

因为第一次输出后x为1,--x为0,!--x为真,所以继续运行并输出-2
输出-2后,--x不为0,!--x条件为假,退出循环
有帮助望采纳~