当我们在c ++中使用k = k--时会发生什么?

Boo*_*oms 4 c++

我知道这k--等于k = k - 1.我想知道k = k--我认为可能导致无限循环的事情.但事实上,我在Visual Studio 2017中编译此代码并且输出与之k = k--相同k = k - 1.

那有什么意义k = k--呢?

Jan*_*ans 9

之前,行为是未定义的,之后,根据[expr.ass]/1,这很好:

[...]在右和左操作数的值计算之后,以及在赋值表达式的值计算之前,对赋值进行排序.右操作数在左操作数之前排序

之前测序根据手段[intro.execution]/8

[...]如果每个值计算和与表达式X相关的每个副作用在每个值计算和与表达式Y相关的每个副作用之前被排序,则表达式X被称为在表达式Y之前被排序.

总之,k=k-1k=k--保证产生相同的结果.

另见:cppreference