C while循环中的增量不';不行?
我正在执行以下while循环,行号没有增加(总是0)。为什么呢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; } (我意识到这
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
合格`加上其他错误。几乎和线一样多。