[英]cannot be return value overwrite in a loop in c?
我要返回0。這里,i=5的返回值不會被覆蓋……是否可以返回0?
#include<stdio.h>
int main(){
int i;
for(i=2;i<=5;i++){
if(5%i==0){
return 0;
}else{
return 1;
}
}
}
不,不可能返回 0。
由於 function 將在第一次迭代時返回,因此可以忽略 for 循環。 如果我們重寫該代碼,它將變成這樣:
int i = 2;
if (i <= 5) {
if (5 % i == 0) {
return 0;
} else {
return 1;
}
}
當第一個循環執行時,i == 2, 5 % i == 1 表示 i % 5,= 0,所以顯然它會返回 1。或者說這個程序沒有機會返回 0。而“返回”意味着function 包含這個“return”將在返回時終止執行。
你的要求太模糊了,你說的“我要返回0”是什么意思,你能用文字描述解釋一下嗎?
如果你的意思是你希望這個循環只在 5 % i == 0 時返回,你應該寫
#include <stdio.h>
int main(){
int i;
for (i = 2; i < =5; i++) {
if(5 % i == 0){
continue;
} else {
return 1;
}
}
}
我似乎明白你要問的是 5 可以被 5 整除(當 i = 5 時),所以它應該返回0
但它必須返回1
。 這樣做的原因是,當第一次執行循環時,檢查了 if 條件(5%2 == 0)
,這是錯誤的。 因此,執行返回 1 的 else 塊。
如果是這種情況,那么您可以這樣做:
for(i=2;i<=5;i++){
if(5%i==0){
return 0;
}
}
return 1;
現在整個 for 循環將被執行,所以你會得到你想要的(我認為你想要的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.