導航:首頁 > 源碼編譯 > 編譯器不會執行for語句

編譯器不會執行for語句

發布時間:2022-12-20 03:47:26

❶ vs中為啥for不執行循環呢

編譯器判斷出裡面的N次循環都是干同樣的事(參數一樣,調用函數一樣),所以就優化掉了。把在工程的屬性中把優化禁止了它就老老實實照你寫的傻跑N次循環了

❷ tc2編譯器運行for語句的問題,不要亂扯到別的,問題真正存在,也不要復制別人的答案,只要有真實水平的進

scanf("%d",&a[i]);

❸ for語句的執行過程

for語句的一般形式為:for(單次表達式;條件表達式;末尾循環體){中間循環體;}。

for循環執行時,會先判斷條件表達式是否成立,如果條件成立則執行中間循環體,執行完中間循環體後接著執行末尾循環體 。

在執行完末尾循環體後對條件表達式再次進行判斷,若條件還成立,則繼續重復中間循環體,當條件不成立時則跳出for循環。

(3)編譯器不會執行for語句擴展閱讀

1、for語句最簡形式為:

for( ; ; )

2、一般形式為:

for(單次表達式;條件表達式;末尾循環體)

{

中間循環體;

}

其中,表示式皆可以省略,但分號不可省略,因為「;」可以代表一個空語句,省略了之後語句減少,即為語句格式發生變化,則編譯器不能識別而無法進行編譯。

for循環小括弧里第一個「;」號前為一個為不參與循環的單次表達式,其可作為某一變數的初始化賦值語句, 用來給循環控制變數賦初值; 也可用來計算其它與for循環無關但先於循環部分處理的一個表達式。

「;」號之間的條件表達式是一個關系表達式,其為循環的正式開端,當條件表達式成立時執行中間循環體。

執行的中間循環體可以為一個語句,也可以為多個語句,當中間循環體只有一個語句時,其大括弧{}可以省略,執行完中間循環體後接著執行末尾循環體。

執行末尾循環體後將再次進行條件判斷,若條件還成立,則繼續重復上述循環,當條件不成立時則跳出當下for循環。

❹ c語言中for的用法

printf("%d",x,y);
不會報錯,printf是一個多參數的c函數,編譯的時候,printf函數本身並不知道"引號"中需要多少個參數,它只是按照順序從堆棧上取參數而已。所以用啥編譯器都不會報告錯誤。
一個分號是一條語句,前綴先執行,後綴後執行。

❺ 關於c語言的for語句嵌套問題

要弄懂這個問題首先要明確for語句的括弧裡面的東西都是什麼意思:
for(j
=
i
+
1;
j
<
10;
j++

第一個分號前的j
=
j
+
1這句的意思是初始化循環變數j。那啥叫循環變數呢?就是跟循環相關的變數,給定一個循環變數,再規定它的初始值和結束值,再規定好它每次循環增加(或減少)多少,那麼你就可以控制這個循環會循環多少次了。
第一個分號和第二個分號之間的j
<
10這句的意思是規定了j的結束值。
最後一個分號之後的j++這句的意思是j每次增加1。
然後要弄懂for語句究竟是怎麼執行的:
首先,執行第一句:j
=
i
+
1。打個比方,i現在是3,那麼j
=
3
+
1,即j現在是4。(初始化循環變數)
然後,執行第二句:j
<
10。這個語句的作用是判斷循環變數是否超過了結束值10,如果超過了就跳出這個循環,否則就接著執行下面的語句。現在j是4,所以不會結束這個循環。(判斷循環變數)
然後,程序進入循環體,也就是每次循環都要幹嘛,這才算真正進入了循環。(執行循環體)
最後,當運行完循環體中的語句後,執行j++。這句的作用是把循環變數j增加1,這樣j就變成5了,如果沒有這一句的話,那麼j永遠都是4,永遠都小於10,,那麼程序永遠都不會跳出這個循環,這就變成死循環了。(改變循環變數)
好了,現在來回答你的問題:
當然不是你所說的那樣,請注意/*2的那條for語句,裡面循環變數j的初始化值是i+1,也就意味著這層循環究竟要循環多少次與i有關,而i是外層循環的循環變數,外層的循環每次都會i++,所以j每次的初始化值都不同,是1,2,3,4,5,6,7,8,9,10。所以相應地,內層循環每次循環的次數都不一樣,是10-1=9,10-2=8,7,6,5,4,3,2,1,0。你可以把自己當做編譯器按照for循環的執行順序走一遍。
就是這樣,你也可以在編程軟體中單步調試看看。

❻ 為什麼C++基於范圍的for循環語句使用不了

應該是編譯器版本較老,選用新版本的編譯器,要支持C++11標准才行。
Visual Studio 2012以上

❼ C語言for語句問題

for循環的執行邏輯是:

  1. 執行初始化部分,這里就是 i = 0;

  2. 判斷條件是否滿足,如果不滿足條件,就直接跳出循環了,條件是 a[i] < s;

  3. 執行for循環體,這里是空語句;

  4. 執行變數更新,這里是 i++;

  5. 跳轉到第二部;

其中,第二部跳出的時候,程序是直接跳轉到第五步之後繼續執行的,也就是說,i++ 是不執行的;

所以,當i為3的時候,取值為4,a[i] < s 不成立,程序直接跳出,i++沒有執行。

所以到最後,i的值是 3

❽ c51的for循環內的語句怎麼不執行,編譯器通過了。

for(d=0;d<40;d++ ) //循環控制變數d要變化,例如 0 到 39,步長1
循環體內的語句 有 ai=0;賦值。
條件語句條件不成立,if(ai==20) PA6=0;if(ai==10) ai=0; 這兩句的賦值不執行。
反復循環執行 ai=0;PA6=1; 運行結果 總是 PA6=1;

❾ 為什麼會報編譯錯誤,為什麼變數sum可能進不去for循環完不成賦值

java 對於基本數據類型的初始化默認值分為兩種情況。 1. 當基本數據類型作為普通變數時,java 不會對其進行初始化,並且在未初始化的情況下引用會報編譯錯誤 2. 當基本數據類型作為類成員變數時,java 會對其進行初始化。由此可見是這個語言強制規定初始化。基本類型作為局部變數不初始化會報編譯錯誤。這個是強制規定。一旦jvm發現沒賦值,就直接報錯讓你改不改不讓你運行。防止很隱蔽的錯誤發生。

❿ 關於C語言中for語句

這個地方加個分號只是做了個空的for循環,
for(j=i+1;j<=100;j++);
其實就是
for(j=i+1;j<=100;j++)
{

}
沒有任何意義
在c和c++中,空的「;」是正確的語法

如果你誤將;寫在了for循環的後邊,造成的結果就是本來屬於for循環的語句沒有執行

例如

for(int j = i+ 1; j < 100; j ++)
printf("%d", j);

如果加了;之後就成了
for(int j = i+ 1; j < 100; j ++);
printf("%d", j);
也就是
for(int j = i+ 1; j < 100; j ++)
{
;
}
printf("%d", j);
那麼就只列印了一個語句

閱讀全文

與編譯器不會執行for語句相關的資料

熱點內容
戰地聯盟3解壓密碼 瀏覽:803
s型命令 瀏覽:23
php年薪5年 瀏覽:67
如何上網上設個人加密賬戶 瀏覽:44
linux打開ssh服務 瀏覽:78
微信位置可以加密嗎 瀏覽:470
演算法蠻力法 瀏覽:438
隨機排練命令 瀏覽:147
python多進程並發 瀏覽:41
安卓軟體安裝如何躲避安全檢測 瀏覽:647
奇幻潮翡翠台源碼百度雲盤 瀏覽:187
什麼軟體可以免費pdf轉word 瀏覽:15
php正則表達式大全 瀏覽:394
androidntp時間 瀏覽:299
輪機長命令簿英文 瀏覽:148
oppo鈴聲設置被加密怎麼處理 瀏覽:548
粵苗app圖形驗證碼怎麼填 瀏覽:899
管家婆架設雲伺服器 瀏覽:254
php的登錄界面代碼 瀏覽:997
php開發客戶端 瀏覽:998