i 和 i 的輸出

2021-06-25 14:32:07 字數 817 閱讀 4276

#include #include #include int main(int argc, const char *argv)

輸出結果為:3 3 3

1 0 0

在vs中:printf輸出時,從輸出表示式右到左計算,然後從右到左入棧,再出棧

vs中的彙編下的**:

5: int main(int argc, const char *argv)

6:

--->在計算++x  和 x++時的區別:計算++x會取出x的值到暫存器中加1後寫回x中,而x++則將x取出到暫存器,然後暫存器將值存入乙個分配的位址,然後暫存器進行加1操作,結果寫回x,但是輸出的時候++x輸出的是x的值,而x++輸出的是分配的位址中儲存的x加1之前的值(輸出時會先取位址的值放入暫存器中,然後把暫存器中的值入棧)

int x = 0;

printf("%d %d %d" ,x++, x++, x++) --> 2 1 0   從右到左計算,從右到左入棧

取出x(0)-->放入暫存器-->分配乙個位址1將x(0)存入-->x自加1-->寫回x -->導致x = 1;

取出x(1) --> 放入暫存器-->分配乙個位址2將x(1)存入-->x自加1-->寫回x -->導致x = 2;

取出x(2) --> 放入暫存器-->分配乙個位址3將x(2)存入-->x自加1-->寫回x-->導致x = 3;

-->依次從位址1  位址2 位址3 取出內容入棧push

出棧 輸出元素 2 1 0



輸入輸出函式和i 與 i的區別

1.atoi函式 作用 把字串轉化成數字,如果第乙個非空格字元存在,是數字或者正負號則開始做型別轉換,之後檢測到非數字 包括結束符 0 字元時停止轉換,返回整型數。否則,返回零。範例 include include int main void 輸出結果 string 12345.67 integer...

i 和i 的用法

式1的運算過程 第一步,第乙個 i計算後i 1,i計算的結果為1 第二步,然後就是i 的計算後i的值不變仍為1,i 的計算結果為1 第三步,接著計算前一步驟中i 自增後的值,此時i 2,再就是第二i 的計算,i的值不變仍是2,所以這一步中i 的計算結果為2 第四步,同上一步計算前一步驟中i 自增後的...

i和i 的區別

大家都應該知道i 和 i的區別,前者是先使用i的值,然後再增加1,而後者是先增加1然後再使用i的值。但是i 和 i那個更好呢?我們實現角度來看 前者是將i值加1後賦給i,然後返回i本身 而後者是先用個臨時變數儲存i值,然後將i值加1賦給i,然後返回臨時變數的值。內建資料型別他們的效率差不多,看他們的...