k = (i++)>(++j)?(i++):(++j); --> k = (i++)>(++j)?((11)++):(++j); // note after condition check i becomes 11.
// due to post increment after assigning the value to k, i will be incremented to 12. but the last ++j wont excuted.
if((i++)>(++j)) //when condition check i=10, j=6 after check i=11,j=6
k=i++; // k= 11++; after assigning 11 to k i will be incremented to 12
else
k=++j; // this wont be executed
2条答案
按热度按时间mwngjboj1#
它被翻译成:
现在很容易说出原因。
i++
使得i
为11,++j
使得j
为6。现在我们有:这是真的,那么我们返回
i++
,现在是12。使用
-E
标志查看预处理器的输出。cyej8jka2#
此代码将被替换为
当检查条件
(i++)>(++j)
时,i
是后递增(在操作之后它将递增)并且j
是前递增(递增j
并替换它)。因此,当检查时,它将花费(10)>(6),这是真的!在该检查之后,i
将变为11。所以你会得到输出
12 6 11
。否则,您可以将
k = (i++)>(++j)?(i++):(++j);
重写为