1

为什么 n 的值在 for 循环内变为垃圾?(我是 C 语言新手,我来自 C++ 背景)

float n = 3.0;
printf ("%f\n", n);
for (; n <= 99.0; n += 2)
    printf ("%f\n", &n);

在此处输入图像描述

4

3 回答 3

4

您正在&nfor 循环中打印 n ( ) 的地址。摆脱&

于 2013-03-09T05:05:27.300 回答
2

您的错误在于您尝试打​​印的方式n。您传递的是地址n不是值。

在这种情况下,使用浮点数一无所获。虽然它会起作用,但 anint也会起作用:

int n = 3;
printf ("%d\n", n);
for (; n <= 99; n += 2)
    printf ("%d\n", n);

在 C 中,循环终止条件也更常见<,例如:

for ( ; n<100; n+=2)

... for 循环条件通常是首选。

于 2013-03-09T05:06:12.667 回答
1

for 循环条件中的错误,您忘记添加后缀f

喜欢:

for (; n <= 99.0f; n += 2)
                ^

记住:无后缀的浮点字面量是双精度,这是比浮点数更常用的浮点类型。

第二个 printf 错误:@adrianz 答案

 printf ("%f\n", &n);
                 ^  remove it
于 2013-03-09T05:05:11.373 回答