错格式说明在scanf(或)的printf(Wrong format specifiers in s

2019-06-18 11:47发布

随着的printf功能来讲,我理解从一些参考和实验以下。

  • 当我们尝试打印与格式说明一个整数值,用于浮动(或)双和副反之亦然的行为是不可预知的
  • 但它是可以使用%c打印的字符等效的整数值。 还使用的%d打印字符的ASCII值(整数表示)是可接受的。

同样,什么是行为scanf ,如果有格式说明的不匹配,并传递给scanf函数的arguements。 是否标准定义的呢?

Answer 1:

可变参数(那些匹配省略号, ... )是默认促进的 。 这意味着,所有短整型被提升到int (或无符号,根据需要)。 还有整数和字符(没有什么区别,我相信 )。 之间的差%d%cprintf是该值仅仅是如何被格式化的

scanf是鱼的不同水壶。 所有你传递参数的指针 。 有指针中没有默认的推广,并且您传递指针对象的类型相匹配的确切格式说明它是至关重要的。

在这两种情况下,如果你的格式说明不匹配提供的参数(例如,通过一个int *%pprintf ),结果是不确定的行为 ,这是远远比做“不可预知”雪上加霜-这意味着你的程序简直是病态的。



文章来源: Wrong format specifiers in scanf (or) printf