为什么n的值在for循环中变为垃圾? (我是C语言的新手,我来自C ++背景)
float n = 3.0;
printf ("%f\n", n);
for (; n <= 99.0; n += 2)
printf ("%f\n", &n);
答案 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)
错误,你忘了添加后缀f
:
喜欢:
for (; n <= 99.0f; n += 2)
^
请记住: unsuffixed 浮点文字是双精度数,这是一种比浮点数更常用的浮点数类型。
第二次打印错误:@adrianz答案
printf ("%f\n", &n);
^ remove it