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...