x = x ++的影响是什么?

Thi*_*aka 2 c

#include <stdio.h>

int main()
{
  int x=100;
  x=x++;
  printf("x : %d\n",x); //prints 101
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出101的原因是什么?我认为输出应该是100.

Rod*_*ddy 5

由于序列点,这是未定义的行为.

在连续的"序列点"之间,对象的值只能通过表达式修改一次

前一个epxression的结束x=100;是一个序列点,而结束x=x++;是另一个.

基本上,你的表达式没有中间的"序列点",但你要修改X的值两次.结果是未定义的行为:基本上,任何事情都可能发生:你可以获得100,101或42 ......