无法理解C / C ++中++ i的输出

时间:2013-10-31 10:26:57

标签: c++ c printf

在运行时我发现输出为:4 4.无法理解原因。

int i = 2;
printf("%d %d", ++i, ++i);

1 个答案:

答案 0 :(得分:4)

您所经历的是Undefined behavior。请阅读序列点。逗号是函数调用中的分隔符,而不是运算符。

序列点是尘埃落定的时间点,到目前为止所见的所有副作用都保证完整。 C标准中列出的序列点是:

  

在完整表达式的评估结束时(完整的   expression是一个表达式语句,或任何其他表达式   不是任何更大表达式中的子表达式);       在||,&&,?:和逗号运算符;和       在函数调用(在评估所有参数之后,以及在实际调用之前)。

标准规定

  

在前一个和下一个序列点之间,一个对象应该具有它   通过表达式的评估,最多修改一次存储值。   此外,只能访问先前值以确定   值存储。