整数类型变量中 %s 的输出是什么?

ste*_*ryx -3 c++

我有这个 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 代码太大了,还不能验证输出,因为我要编译一个多小时。但我确信它没有构建错误。

eer*_*ika 5

整数类型变量中 %s 的输出是什么?

这就是(C)标准所说的:

如果任何参数不是相应转换规范的正确类型,则行为未定义。

由于行为未定义,因此输出可以是任何内容。

unsigned int 的正确说明符是%u, %o,%x%X取决于您想要输出的基数(十进制、八进制、十六进制或大写十六进制)。

使用 %s 的原因是什么

只有程序的作者知道,除非他们记录下来。我的猜测是这是一个错误。


附注。

注意:USHORT 是 unsigned int

避免使用 USHORT 作为 unsigned int 的别名。它令人困惑,代码的读者会期望它是 unsigned short。