小编Vir*_*co_的帖子

当用户输入-0.1时,为什么这个循环不会立即中断

当我偶然发现这段代码时,我正在审查我为算法类​​做的一些练习,但它没有像我想象的那样工作.

所以练习如下:写一个要求正整数的程序然后打印它的double,除非数字是负数.

所以这是代码:

int main(void) {
    int n = 1;

    while (n >= 0) {
        printf("Veuillez introduire un nombre entier positif: ");

        if (!(scanf("%i", &n)) || n < 0) 
            break;

        printf("Le double de %i est de: %i\n", n, (2 * n));
    } 
}
Run Code Online (Sandbox Code Playgroud)

很简单.

事情是,如果我尝试输入一个字符,一个负数,...正如预期的那样,程序会立即停止但是如果我输入"-0.1"它首先输出0的两倍,即0,然后再次运行循环到if声明.

如果我只输入0或甚至-0它不会这样做它继续运行(它应该是0,因为0不是负数).

这是输出:

Veuillez introduire un nombre entier positif: -0  
Le double de 0 est de: 0  
Veuillez introduire un nombre entier positif: 1  
Le double de 1 est de: 2  
Veuillez introduire un nombre entier …
Run Code Online (Sandbox Code Playgroud)

c int loops scanf while-loop

3
推荐指数
1
解决办法
79
查看次数

标签 统计

c ×1

int ×1

loops ×1

scanf ×1

while-loop ×1