为什么这个变量的值在for循环中变为垃圾? C

时间:2013-03-09 05:01:58

标签: c for-loop garbage

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

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

enter image description here

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

在这种情况下,通过使用浮点,你什么都得不到。虽然它会起作用,int也会起作用:

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

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

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

...对于循环条件,通常是首选。

答案 2 :(得分:1)

你的for循环条件出现

错误,你忘了添加后缀f

喜欢:

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

请记住: unsuffixed 浮点文字是双精度数,这是一种比浮点数更常用的浮点数类型。

第二次打印错误:@adrianz答案

 printf ("%f\n", &n);
                 ^  remove it