gpt4 book ai didi

c - while 循环中的增量不起作用?

转载 作者:行者123 更新时间:2023-11-30 20:10:22 28 4
gpt4 key购买 nike

我正在执行以下 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;
}

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

最佳答案

使用 printf 时,在 % 符号后面放置什么字母来进行变量替换很重要。如果你看the list of format specifiers ,您会看到 %f 用于 float 。这意味着它认为 line_number 是一个 float ;它没有进行正确的转换,因为它没有意识到需要这样做,而只是读取与 float 相同的位。

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

(从技术上讲,它比这更糟糕,因为这是 undefined behavior ;但是,这是最有可能的结果。)

<小时/>

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

关于c - while 循环中的增量不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164832/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com