C语言 为什么下面代码的输出是20,任何人都可以帮助我[关闭]

mzillmmw  于 2023-01-01  发布在  其他
关注(0)|答案(1)|浏览(169)

16小时前关门了。
Improve this question

#include <stdio.h>

int main() {
    int y = 3;
    int z = (--y) + (y = 10);
    printf("%d", z);
    return 0;
}

我已经尝试了所有的编译器,但输出是20。如何?

toiithl6

toiithl61#

您的代码不会编译,但假设您在代码中将y定义为int,并且忘记粘贴该定义,则该代码具有未定义的行为,因为您在同一表达式的两个不同位置读取和修改了y,而没有序列点。
该行为是未定义的,因此尝试解释输出是没有意义的。

相关问题