簡體   English   中英

您好,關於 c 編程中的 break 語句的問題

[英]hi there, a question about break statement in c programming

我編寫了這個循環來添加數字,如果輸入的數字小於零,則中斷退出循環,最后打印計算出的數字而不添加負數。 但問題是,當我輸入 15 和 15 和 -2 時,即使我在加法之前寫了 break 語句,output 是 28 而不是 30 我發現了如何解決這個問題,我想知道的是為什么,謝謝。

#include<stdio.h>

void main()
{
    int j =1, num =0, rslt =0;
    while(1) {
        if (num<0) break;
        printf("enter a number : ");
        scanf("%d", &num);
        rslt = rslt+num;
    }
    printf("the resluts are %d\n", rslt);

目前,在將上一次迭代的輸入添加到結果之后,您正在有效地測試它。 相反,請在用戶輸入數字后立即檢查,然后再執行任何計算。

#include <stdio.h>

int main(void)
{
    int num = 0, rslt = 0;

    while (1) {
        printf("enter a number : ");
        scanf("%d", &num);
        
        if (num < 0)
            break;
                               
        rslt += num;           
    }                          
                              
    printf("the results are %d\n", rslt);
}

您可能還想檢查scanf返回您期望的成功轉換次數(在本例中為一次),以處理用戶輸入無效輸入的事件。

if (1 != scanf("%d", &num))
    break;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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