我有下面的代码行。
int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);
输出 -936283178250000000000.000000 -936283178250000000000.000000 -936283178250000000000.000000 这是什么意思?
我有下面的代码行。
int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);
输出 -936283178250000000000.000000 -936283178250000000000.000000 -936283178250000000000.000000 这是什么意思?
这意味着您使用了不正确的格式指令。试试这个:
printf("%d", i);
printf("%c", c);
或者,将您的两个值转换为i
和c
浮动(但这没有多大意义,尤其是在 的情况下c
),最好使用正确的格式指令。
当您使用不正确的说明符时,行为是undefined,这就是您所观察到的。
你是从哪里得到 %f 的?如果没记错的话 %f 是浮点数的 C++ 参数。
通过您使用:
int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);
您告诉编译器您正在打印的所有内容都是浮点数(又名十进制),而实际上它应该是
printf("%d",i);
printf("%c",c);
printf("%s",s);
在 printf 中使用错误的格式说明符将导致未定义的行为。当我说未定义的行为时,它可以给出一个输出,但输出可能因一种 C 实现而异。通常这会导致警告。GCC 编译器会为此发出警告。