c - 一元++优先顺序

标签 c unary-operator

如果int x=5;我想表达 y=++x * ++x;评估为:

首先执行++x导致x=6然后又++x导致x=7然后表达式计算 y=x*x使 y=49 的值 使用相同的推理以下代码行

int z=5, x=5,y=0,p=0;
y=++x * ++x + ++x;
p= ++z + ++z * ++z;

应该评估 y 的相同值和p但编译器产生不同的答案。我可能在优先顺序中缺少一些东西。

最佳答案

您的两个表达式都通过尝试在没有中间序列点的情况下多次修改值来导致未定义的行为。您的问题没有通用答案。

关于c - 一元++优先顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15450873/

相关文章:

c# - 一元运算符(+=、=+、++x 和 x++)之间的区别

Java 表达式解析器和计算器调车场算法

c++ 只有 : unary minus for 0x80000000

dart - dart/flutter 中的这个一元后缀是什么?

c - 我如何使用变量类型标记此输入行,以便我可以决定保存我的信息的结构的大小?

c - 识别有效算术表达式以及识别有效标识符和运算符的 Lex 程序

c - If(int IDnumvariable == structname[counter].IDnumber) 不起作用

CTRL+D 不发送到管道 C

c - 将指向 char 的指针转换为指向 int 的指针后出现意外的字节顺序

javascript - 为什么这个一元函数在另一个 javascript 函数中?