为什么破解前的代码不起作用?

时间:2014-01-23 21:00:45

标签: c break

int main() {
    int input = 0;
    do {
        if(input > 1) {
            printf("You entered");
            break;
        }

        printf("Enter an integer (> 1): ");
        scanf("%d",&input);

    } while(input < 2);

    return 0;
}

您好,我是C的新手。有人可以解释一下休息吗?在此程序中,中断前的语句“您输入”未显示在控制台上。我知道java,但这完全不同。

2 个答案:

答案 0 :(得分:4)

12之间不存在整数。改变

if(input > 1)  

if(input > 0)  

之后,如果您输入1,则程序会进入if正文,然后打印You entered并在遇到break语句时立即终止do-while循环

答案 1 :(得分:2)

“break”语句会导致代码立即退出循环。

您没有看到任何输出,因为您只在输入严格小于2时循环,但您的if语句正在寻找严格大于1的输入。

那不行;如果输入1,则if语句不会执行(因为1> 1为假),如果输入2,则循环立即退出(因为2&lt; 2为false)。

您需要在输入&lt; = 2时循环,或者您需要测试输入&gt; = 1.

说完了所有......

标准输出通常是行缓冲,这意味着在缓冲区已满或发送换行符之前,您不会在控制台上看到任何内容。您需要手动刷新流或发送换行作为格式字符串的一部分;任

printf("You entered");
fflush(stdout);        

printf("You entered\n");

应该有用。