我读到字符串文字的类型是 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
给出了完全不同的值?
最佳答案
您不能传递错误类型的值(与格式说明符所期望的类型不匹配的类型)并且不会获得未定义的行为。
例如,%f
所期望的 double
很可能比指针(这就是您的指针)更大实际上)传递,从而导致传递的值与 printf()
使用的值之间不匹配,从而或多或少造成困惑。
关于c - C 中字符串文字的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18672119/