❶ 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循環的執行邏輯是:
執行初始化部分,這里就是 i = 0;
判斷條件是否滿足,如果不滿足條件,就直接跳出循環了,條件是 a[i] < s;
執行for循環體,這里是空語句;
執行變數更新,這里是 i++;
跳轉到第二部;
其中,第二部跳出的時候,程序是直接跳轉到第五步之後繼續執行的,也就是說,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);
那麼就只列印了一個語句