我宣布一个变量假设为i = 1
然后我在printf函数中使用了一元递减运算符
printf("%d %d",i--,i);
我希望输出为1 0
,但显示的输出为1 1
为什么i
的值没有减少?
答案 0 :(得分:3)
在C中不保证函数参数的评估顺序。它可能是从左到右,也可能是从右到左。这取决于编译器的实现。
未定义行为在一个表达式中对变量和增量或减量运算符进行多次引用。
答案 1 :(得分:-1)
i--
在评估之后递减值。
后递增和后递减创建对象的副本,递增或递减对象的值,并从递增或递减之前返回副本。 http://en.cppreference.com/w/cpp/language/operator_incdec
此外,无法保证逃避的顺序。所以i
(第二个参数)可以在i--
(第一个)