2014-09-19 89 views
-3
#include <stdio.h>  

struct testStruct 
{ 
    int max; 
    float y; 
    float x; 
}; 

int main() 
{ 
    struct testStruct test; 

    test.max = 50; 
    test.y = 0.001; 
    test.x = 0.05; 
    printf("%i\n", test.max); 
    printf("%i\n", test.x); 
    printf("%i\n", test.y); 
} 

我用intfloat的值创建了一个结构体。当我出于某种原因打印这些值时,两个float值将打印一些垃圾值,如3539983而不是其各自的值。任何人都可以解释为什么这是?值int正确打印。打印float结构的值

+0

您正在使用您的花车错误的格式说明,在这里看到:http://www.cplusplus.com/reference/cstdio/printf/ – MByD 2014-09-19 13:21:08

+2

你应该使用'%f','%g'或'%e'中的一个来打印浮点值。 '%i'和'%d'是有符号整数。打开编译器警告;您通常会收到格式不匹配的警告。 – 2014-09-19 13:21:25

回答

2

您需要将内printf修复您符:

printf("%d\n",test.max); 
printf("%f\n",test.x); 
printf("%f\n",test.y); 

看看here

2
printf("%i\n",test.max); 
printf("%i\n",test.x); 
printf("%i\n",test.y); 

应该是

printf("%d\n",test.max); 
printf("%f\n",test.x); 
printf("%f\n",test.y); 
0

%d和%i是在相同输出时。 变化

printf("%f\n",test.x); 
printf("%f\n",test.y); 

打印您所需的结果