我知道这k--等于k = k - 1.我想知道k = k--我认为可能导致无限循环的事情.但事实上,我在Visual Studio 2017中编译此代码并且输出与之k = k--相同k = k - 1.
那有什么意义k = k--呢?
在c ++ 17之前,行为是未定义的,之后,根据[expr.ass]/1,这很好:
[...]在右和左操作数的值计算之后,以及在赋值表达式的值计算之前,对赋值进行排序.右操作数在左操作数之前排序
和之前测序根据手段[intro.execution]/8
[...]如果每个值计算和与表达式X相关的每个副作用在每个值计算和与表达式Y相关的每个副作用之前被排序,则表达式X被称为在表达式Y之前被排序.
总之,k=k-1并k=k--保证产生相同的结果.
另见:cppreference