-3

我有下面的代码行。

int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);

输出 -936283178250000000000.000000 -936283178250000000000.000000 -936283178250000000000.000000 这是什么意思?

4

3 回答 3

3

这意味着您使用了不正确的格式指令。试试这个:

printf("%d", i);
printf("%c", c);

或者,将您的两个值转换为ic浮动(但这没有多大意义,尤其是在 的情况下c),最好使用正确的格式指令。

当您使用不正确的说明符时,行为是undefined,这就是您所观察到的。

于 2012-07-27T13:38:08.690 回答
0

你是从哪里得到 %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);
于 2012-07-27T16:41:34.310 回答
0

在 printf 中使用错误的格式说明符将导致未定义的行为。当我说未定义的行为时,它可以给出一个输出,但输出可能因一种 C 实现而异。通常这会导致警告。GCC 编译器会为此发出警告。

于 2012-07-31T21:52:17.723 回答