c - C 中的运算符优先级

标签 c gcc operators

无法解释以下程序的输出。据我所知,输出应该是 19,但是运行它给出的输出是 20。我使用 gcc 来编译这个程序。

int main()
{ 

    int x, y = 5;

    x = ++y + ++y + --y;
    printf("%d", x);

    return 0;
}

最佳答案

当您在两个序列点(在您的情况下是语句末尾)之间多次修改 y 时,您的程序会利用未定义的行为。如果您使用 -Wall 打开警告,您的编译器甚至可能会就此发出警告。

关于c - C 中的运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15042970/

相关文章:

c - 在 C 程序中启动 matlab 代码的最有效方法

c++ - 如何使用 -fPIC 重新编译

c++ - std::unordered_map 之间的reinterpret_cast

JAVA - 对字符的逻辑运算

C++ 我什么时候使用 -> 或::

c - 语法错误 : missing ';' before 'type'

在 Mac OSX 上安装 C 库

c - 什么是 Linux 中的核心转储文件?它提供什么信息?

java - 对于Integer类型变量, '='运算符是否等于值或引用?

c++ - 忽略 GCC "error: braces around scalar initializer for type"错误。让他们警告