for語句的作用范圍
正如你所說的,這個就是由于for語句的作用范圍導致的
比較這兩個:
for(j=2;j<i;j++)
if(i%j==0)break;
if(j>=i)printf("%d ",i);
和
for(j=2;j<i;j++)
{
if(i%j==0)break;
if(j>=i)printf("%d ",i);
}
前一個(正確的那個)for的作用范圍只是到if(i%j==0)break;這一句,
for語句的執行只會有兩種情況:
1.在j<i的所有j中,找不到能夠滿足i%j==0的數,當j==i時,退出for循環,
隨后判斷if(j>=i),當j==i時,說明該數是質數,輸出
2.在j<i的j中,有能夠滿足i%j==0的數,直接進行break處理,隨后判斷if(j>=i),這時候j>=i不成立,不進行輸出
后一個(錯誤的那個)for的作用范圍是到if(j>=i)printf("%d ",i); 這一句,
for語句的執行只會有兩種情況:
1.在j<i的所有j中,找不到能夠滿足i%j==0的數,當j==i時,退出for循環,
if(j>=i)的判斷不會被執行
2.在j<i的j中,有能夠滿足i%j==0的數,直接進行break處理,繼續進行最外層的for循環處理
其實,在后一種情況中,for循環中以及限定j<i,所以其內部的if(j>=i)printf("%d ",i); 這一句永遠不會被執行的,也就不會輸出任何信息
for語句的作用范圍
正如你所說的,這個就是由于for語句的作用范圍導致的比較這兩個:for(j=2;j=i)printf("%d ",i); 和for(j=2;j=i)printf("%d ",i); } 前一個(正確的那個)for的作用范圍只是到if(i%j==0)break;這一句,for語句的執行只會有兩種情況:1.在j=i),當j==i時,說明該數是質數,輸出2.在j=i),這時候j>=i不成立,不進行輸出后一個(錯誤的那個)for的作用范圍是到if(j>=i)printf("%d ",i); 這一句,for語句的執行只會有兩種情況:1.在j=i)的判斷不會被執行2.在j=i)printf("%d ",i); 這一句永遠不會被執行的,也就不會輸出任何信息。
需要for循環語句的使用講解
只要指定條件為 true 都執行語句塊.for (initialization; test; increment)statements 參數initialization 必選項.一個表達式.該表達式只在執行循環前被執行一次.test 必選項.一個 Boolean 表達式.如果 test 是 true,則 statement 被執行.如果 test 是 false,則循環結束.increment 必選項.一個表達式.在每次經過循環的最后執行該遞增表達式.statements 可選項.test 是 true 時,要執行的一個或多個語句.可以是復合語句.說明循環要執行確定的次數,通常使用 for 循環.示例下面的例子示范了一個 for 循環./* 在開始時 i 被設為 0,并在每次重復的最后被增加 1.在循環重復前,如果 i 不小于 10,則循環結束.*/var myarray = new Array();for (i = 0; i myarray = i;} 在c語言的解釋是:for:循環語句.作用:循環.它的一般形式為:for(;;)語句;初始化總是一個賦值語句,它用來給循環控制變量賦初值;條件表達式是一個關系表達式,它決定什么時候退出循環;增量定義循環控制變量每循環一次后按什么方式變化.這三個部分之間用";"分開.例如:for(i=1;i10時,結束循環.注意:(1).for循環中語句可以為語句體,但要用"{"和"}"將參加循環的語句括起來.(2).for循環中的"初始化"、"條件表達式"和"增量"都是選擇項,即可以缺省,但";"不能缺省.省略了初始化,表示不對循環控制變量賦初值.省略了條件表達式,則不做其它處理時便成為死循環.省略了增量,則不對循環控制變量進行操作,這時可在語句體中加入修改循環控制變量的語句.(3).for循環可以有多層嵌套.例如:for(;;) 語句;for(i=1;;i+=2) 語句;for(j=5;;) 語句;這些for循環語句都是正確的.FORfield of regard 的縮寫。