整数类型变量中%s的输出是多少?

时间:2017-02-01 10:59:18

标签: c++

我有这个c ++代码。 我只关注我所关注的部分。 使用%s的原因是什么,它将显示哪些信息作为输出? 我知道%s是字符串,这很奇怪,因为val的数据类型是整数。如何成为可能。

myClass::myFunc(USHORT & val){
   : (other codes not of importance)
   updateVal(val);
   printf("val = %s", value)
}

注意:USHORT是unsigned int 代码是如此巨大,无法验证输出,因为我必须编译超过一个小时。但我确信它没有构建错误。

1 个答案:

答案 0 :(得分:4)

  

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

这是(C)标准所说的:

  

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

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

unsigned int的正确说明符是%u%o%x%X,具体取决于您希望输出的基数(十进制,八进制,十六进制或上限)案例十六进制)。

  

使用%s的原因是什么

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

PS。

  

注意:USHORT是unsigned int

避免使用USHORT作为unsigned int的别名。令人困惑的是,代码的读者会希望它是无符号的短代。