為什麼逗號表達式返回最後一個表達式的結果?--從另一個角度看C++
auto v = func1(), func2(), func3();
因為一個函數調用是要經過參數壓棧,調用完了,還有退棧(棧清理)的過程。
而這個退棧的工作可以由調用者或者被調用者來進行,因此也分為兩種不同的調用約定:
__cdecl和_stdcall,當然這個扯遠了。要是再扯遠點,還有利用寄存器,省去壓棧的fastcall和C++特有的thiscall。
正因為函數調用是一個不斷地入棧出棧的過程,所以逗號表達式返回的是最後一個表達式的結果。
否則,假定是返回第一個表達式的結果,那這個結果存放在哪裏?
最後更新:2017-04-02 16:47:34