真正的简短和简单:
说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。所以编译器认为它是老板。