2

我读过字符串文字的类型是char [n + 1],其中n是长度。字符串文字的存储是一个实现问题。但它仍然必须在瞬间是唯一的。

printf
("%u\t %s\t  %d\t  %c\t  %f\t  %e\t  %x\t  %p\t",
&"XY",&"XY",&"XY",&"XY",&"XY",&"XY",&"XY",&"XY");

这段代码的输出是

4206628 XY 4206628 $ 0.000000 1.800980e-307 7ffde000 00000032

为什么%f给出零,%s给出XY(没有影响&?),并%p给出完全不同的值?

4

2 回答 2

2

您不能传递错误类型的值(与格式说明符所说的预期不匹配的类型)并且不会得到未定义的行为。

例如,期望的adouble很可能大于传递的指针(实际上是传递的指针),从而导致传递的值与 消耗的值不匹配,或多或少造成混乱因此。%fprintf()

于 2013-09-07T10:05:20.087 回答
1

为什么%f给零?

因为%f预计double不是一段时间,所以这会导致未定义的行为。

%s给出XY(没有效果&?)

可能是因为对于数组arr:arr并且&arr具有相同的值。但是,类型不同,这意味着您将意外的类型printf再次传递给未定义的行为。

%p给出完全不同的价值?

这就是您要查找的指针值。

于 2013-09-07T10:07:33.033 回答