我有这个c ++代码。 我只关注我所关注的部分。 使用%s的原因是什么,它将显示哪些信息作为输出? 我知道%s是字符串,这很奇怪,因为val的数据类型是整数。如何成为可能。
myClass::myFunc(USHORT & val){
: (other codes not of importance)
updateVal(val);
printf("val = %s", value)
}
注意:USHORT是unsigned int 代码是如此巨大,无法验证输出,因为我必须编译超过一个小时。但我确信它没有构建错误。
答案 0 :(得分:4)
整数类型变量中%s的输出是什么?
这是(C)标准所说的:
如果任何参数不是相应转换规范的正确类型,则行为未定义。
由于行为未定义,输出可以是任何内容。
unsigned int的正确说明符是%u
,%o
,%x
和%X
,具体取决于您希望输出的基数(十进制,八进制,十六进制或上限)案例十六进制)。
使用%s的原因是什么
只有该程序的作者知道,除非他们记录下来。我的猜测是这是一个错误。
PS。
注意:USHORT是unsigned int
避免使用USHORT作为unsigned int的别名。令人困惑的是,代码的读者会希望它是无符号的短代。