我有这个 C++ 代码。我只考虑我关心的部分。使用 %s 的原因是什么,它将显示哪些信息作为输出?我知道 %s 用于字符串,这很奇怪,因为 val 的数据类型是整数。这如何成为可能。
myClass::myFunc(USHORT & val){
: (other codes not of importance)
updateVal(val);
printf("val = %s", value)
}
Run Code Online (Sandbox Code Playgroud)
注意:USHORT 是 unsigned int 代码太大了,还不能验证输出,因为我要编译一个多小时。但我确信它没有构建错误。
整数类型变量中 %s 的输出是什么?
这就是(C)标准所说的:
如果任何参数不是相应转换规范的正确类型,则行为未定义。
由于行为未定义,因此输出可以是任何内容。
unsigned int 的正确说明符是%u, %o,%x和%X取决于您想要输出的基数(十进制、八进制、十六进制或大写十六进制)。
使用 %s 的原因是什么
只有程序的作者知道,除非他们记录下来。我的猜测是这是一个错误。
附注。
注意:USHORT 是 unsigned int
避免使用 USHORT 作为 unsigned int 的别名。它令人困惑,代码的读者会期望它是 unsigned short。