Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C while循环中的增量不';不行?_C_Loops_While Loop - Fatal编程技术网

C while循环中的增量不';不行?

C while循环中的增量不';不行?,c,loops,while-loop,C,Loops,While Loop,我正在执行以下while循环,行号没有增加(总是0)。为什么呢 int main(int argc, const char* argv[]) { int line_number = 0; int f = 0; while (f == 0) { printf("LINE NUMBER IS %f\n", line_number); line_number++; } return EXIT_SUCCESS; } (我意识到这

我正在执行以下while循环,行号没有增加(总是0)。为什么呢

int main(int argc, const char* argv[]) 
{
    int line_number = 0;
    int f = 0;
    while (f == 0) {
        printf("LINE NUMBER IS %f\n", line_number);
        line_number++;
    }
    return EXIT_SUCCESS;
}

(我意识到这是一个无限循环,但我在这里感兴趣的是为什么行号没有增加。)

对于
printf
,在变量替换的
%
符号后面放什么字母很重要。如果你看一下,你会发现
%f
代表浮点数。这意味着它认为
行号
是一个浮点数;它没有进行正确的转换,因为它没有意识到它需要这样做,而只是读取与浮点相同的位

浮点格式的工作方式是,但在很长一段时间内,您将非常接近于零。根据您的计算机速度和耐心,如果您让它运行更长时间,您可能会或可能不会看到它发生变化

(从技术上讲,这甚至比现在更糟糕;然而,这是最有可能的结果。)



如果您使用了错误的格式说明符,大多数编译器都会有一些选项来警告您;您可能应该打开默认的编译器警告集,以便它可以告诉您有关此问题和其他问题。

类型就是一切…,格式说明符也是如此。编译器警告也是如此,它的增量很好。
const char*argv[]
->未定义的行为<代码>*argv[]不应为
const
合格`加上其他错误。几乎和线一样多。