真正的简短和简单:
说col = 10
,size = 8
。然后执行以下操作:
col -= size--;
那么在对 col 进行减法之前,size 是否会被减去 7(所以 col = 3)?还是 col = 2?
谢谢
size--
产生 的先前值size
,因此这等效于:
col -= size;
-- size;
size--
递减大小并返回原始值(--size
将递减并返回新值)。
右边的表达式在左边之前计算,所以右边的值会从 中减去col
。
如果col = 10
和size = 8
,那么在 之后col -= size--
,size
将等于 7 并且col
等于 2。
当++
or--
出现在操作数之后时,先返回值,然后递增/递减。如果之前出现,则相反。
答案应该是col = 8
。如何?
col -= size--;
是这样解释的:
在编译器的头脑中:
编译器:嗯,size--
嗯?好吧好吧,什么col
?10
? 而且size
是.. 8
?Fine 设置col
为2
经过该操作然后递减size
。
如果是:col -= --size;
它将是:
编译器:嗯,--size
嗯?好吧好吧,什么size
?8
? 将其设置为7
.. 并且col
是10
? 所以减法后的答案是col = 3
。所以编译器认为它是老板。