cfor迴圈中定義的變數會影響效率嗎

時間 2021-10-17 04:48:57

1樓:匿名使用者

這裡面其實有一點是比較需要注意的,就是你在for迴圈裡面反覆定義的int型變數tmp實際上始終佔用的是同一塊記憶體。。。。從這個角度來看,對於內建型別應該影響可以忽略,對於自定義型別需要反覆建立和析構應該是有一定影響的

2樓:

對於優化編譯的程式而言,上述兩個**片段不會有任何效率上的差異。

不優化的話,第一個效率會好一些。

3樓:

變數i=0,i<9,i++

for(i=0,i<9,i++)

當i執行到i=8時就不在迴圈了!

4樓:匿名使用者

for中改寫成簡單的過程,兩種反彙編如下

int sum = 0,tmp;

0134136e mov dword ptr [sum],0

for (int i = 0; i < 10; ++i)

///////////////////////////////////////////

int sum = 0;

00a5136e mov dword ptr [sum],0

for (int i = 0; i < 10; ++i)

單看反彙編行數沒差別,應該是編譯器將c++解釋成機器語言的過程進行了一定的優化,

for中換成其他非內建型別,比如帶有析構的類,應該就能明顯的比較出來了,畢竟需要對臨時變數重複的銷燬建立

關於c/c++,for迴圈中的變數問題

5樓:追悔七年

如果你是抄c語言編譯,在for中是不能定義變數的bai,c++編譯器du可以,在for中的變數作用zhi域在for**塊內,外部的j被隱藏dao.j在for中宣告時被賦值,是一次性的,for的迴圈體不包含賦值語句.

vc6中好像這種寫法有bug,for中的變數具有函式的生命週期.之後的版本解決了這個問題.

6樓:朱古力兜

是for迴圈括號條件裡面已經賦值的

for迴圈裡面定義的變數具有區域性作用域 會遮蔽在其他地方定義的同名變數

在c++裡是可以那樣寫的

7樓:匿名使用者

這樣bai

的寫法在老的c++標準du

下肯定是直接編譯zhi錯誤的,for 裡面的dao j 的作用域是和外面的j一樣的。

在新版的標準權

下,for 裡面的j作用域會比外面的j深一層,如果編譯不會有問題,下面scanf 裡面用到的j,肯定是for那定義的j。c++的名稱查詢規則是由近及遠的。

c++中for迴圈內定義變數的使用範圍,及其他情況下定義變數的使用範圍。

8樓:

c++的每個變數都是有塊級作用域。所謂的塊級作用域,就是變數在定義它的「專{}」裡面都是起作用的,舉屬個例子:

if(int a = 4 > 2)

// 第一層}}

變數a在第一層,第二次,第三層裡面都有效。

變數b在第二次,第三層裡面都有效。

變數c,d在第三層裡面都有效。

9樓:匿名使用者

這是區域性變數,只能在迴圈內使用,不是全域性變數,全域性變數就沒有範圍限制了

10樓:亢愉律經藝

變數i是這樣的。

一般變數的有效範圍十是它靠得最近的兩大

括號之間

,但這之間也可以有任意對的

大括號。

多重迴圈中的continue的用法

public class cont system.out.println test 當是continue back1的時候,當i 0時候第二層for迴圈到j 9的時候就結束此次迴圈,執行continue back1,到第一層迴圈。此時因為有i 所以i 1的時候,第二層for迴圈到j 9的時候就結束當...

請問for迴圈中的switch語句中case後用break還是continue??區別是什麼

鐮刀鐵錘遊騎兵 break是結束並跳出迴圈語句,continue是結束本次迴圈然後進入下次迴圈 迴圈的定義是程式段執行完了以後,再次判斷條件,若條件為真,則繼續執行該程式段。而在switch結構當中,只是該程式段執行完了之後,就繼續執行下面的語句。因此很明顯switch結構不是迴圈。迴圈有重複 反覆...

for迴圈中的i 何 i沒區別嗎

for迴圈中的i 和 i是有區別的,區別如下 i 是先引用i的值再自加,而 i是先讓i自加再引用i的值。本迴圈中i 的輸出值為0 1 2 3 4 5 6 7 8 9,而 i的輸出值為1 2 3 4 5 6 7 8 9,但兩種演算法執行完畢之後,i的值都為10.一般實際應用中,先加在引用顯得更高效。f...