C代码,其中我有一个整数变量的值,在一个预增量操作之后,我需要得到输出

C代码,其中我有一个整数变量的值,在一个预增量操作之后,我需要得到输出,c,pre-increment,C,Pre Increment,请给出带有解释的输出? 我得到的答案是12,但应该是13根据C标准,代码的行为是未定义的,因为不允许在同一表达式中多次使用预增量运算符。输出可以是任何东西 有关该主题的更全面的处理,请参见的答案。虽然行为未定义,但在UR的情况下,考虑到解析是从左开始的,它被执行为,i=5+4+3=12 为了解释, i=(++i)+(++i)+(++i) 现在i=2,所以第一个++i扩展为3,变成i=3 i=(++i)+(++i)+3 现在i=3,所以++i扩展为4,变成i=4 i=(++i)+4+3 现在i=4

请给出带有解释的输出?

我得到的答案是12,但应该是13

根据C标准,代码的行为是未定义的,因为不允许在同一表达式中多次使用预增量运算符。输出可以是任何东西


有关该主题的更全面的处理,请参见的答案。

虽然行为未定义,但在UR的情况下,考虑到解析是从左开始的,它被执行为,i=5+4+3=12

为了解释, i=(++i)+(++i)+(++i) 现在i=2,所以第一个++i扩展为3,变成i=3 i=(++i)+(++i)+3

现在i=3,所以++i扩展为4,变成i=4 i=(++i)+4+3

现在i=4,所以第一个++i扩展为4,变成i=5
i=5+4+3

我强烈建议您在编写自己的问题之前,先查找已经存在的问题。使用谷歌搜索。应该有一个脚本来检测这种重复的枪械和自动回复,(也在C++上)。如果只是偶尔将var名称从“i”改为“i”,那就太好了。它从来不是“j”,或“index”,或“banana”——它总是“i”。不幸的是,我们确实有关于
j++
,以及关于a、b、c、p、k、s、u、v、x、y和z的问题。以及
++
--
以及前置和后置运算符。
i=2;

i= ++i + ++i + ++i;

printf(i)