簡體   English   中英

不能在 c 的循環中覆蓋返回值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM