vc中for迴圈中多變數初始化的坑

2021-08-02 18:45:46 字數 540 閱讀 5028

在vs2013的debug模式中,如果用這樣來定義的話,

int isum = 0;

for (int j=0,i = 0; j<3&&i < 3;j++,i++)

int itemp = i;

那最後itemp的值最終會變成2!

而在變數監視中顯示出來的值最是i=3。

那就奇怪了,為什麼i=3,賦值給itemp,itemp就變成了2呢?

我們再對上面的**做一點修改

int isum = 0;

i = 0;

for (int j=0; j<3&&i < 3;j++,i++)

int itemp = i;

那最後itemp的值就與i的值一樣了。

為什麼會這樣呢?具體原因我也不清楚,可能是編譯器的bug?或者多餘的變數不能放在for迴圈裡進行初始化?

最後我再重申一下,上面的測試是在debug模式中做的,release沒試過。有興趣的同學可以自己用vs2013來試下

變數初始化

int a 是變數定義,也就是說編譯器將為a分配儲存,這在編譯時被處理。int a 0 是定義 初始化,定義的分配儲存的action在編譯時完成,初始化的action則在執行時完成 將執行類似dword ptr ebp 4 0的指令,而單獨的int a 不會有對應的執行指令 定義是分配空間,而初始化...

java中變數初始化

首先一些被初始化物件的概念 類變數 類靜態成員 類被載入時產生 它的生存期是類的生存期 自動初始化 類被載入 成員變數 類成員 在使用new 建立該類例項時產生 它的生存期與該類例項物件的生存期相同 自動初始化 構造方法被呼叫 區域性變數 類的方法中的變數 該方法被呼叫時產生 在該方法退出後結束 必...

java中變數初始化

1 類變數 類靜態成員 類被載入時產生 它的生存期是類的生存期 自動初始化 類被載入 成員變數 類成員 在使用new建立該類例項時產生 它的生存期與該類例項物件的生存期相同 2 方法變數是指在方法中宣告的變數,方法變數的修飾詞要麼沒有,有的話永遠只可能有乙個,那就是final,其它任何修飾詞都是不允...