为什么这段代码总能产生x=2?
unsigned int x = 0;
x++ || x++ || x++ || x++ || ........;
printf("%d\n",x);
Run Code Online (Sandbox Code Playgroud)
cob*_*bal 30
第1个x++将x更改为1并返回0
,第2个x++将x更改为2并返回1
此时或短路,返回true,并将x留在2.
Sud*_*shu 11
x ++ || x ++ || x ++ || x ++ || ........;
||短路.从左边开始评估,当找到真值(非零)时,它会停止评估,因为表达式现在为真,永远不会再为假.
首先x++评估为0(因为它是后增量),第二个评估为1,这是真的,并且presto,你已经完成了!