随着的printf
功能来讲,我理解从一些参考和实验以下。
- 当我们尝试打印与格式说明一个整数值,用于浮动(或)双和副反之亦然的行为是不可预知的 。
- 但它是可以使用
%c
打印的字符等效的整数值。 还使用的%d
打印字符的ASCII值(整数表示)是可接受的。
同样,什么是行为scanf
,如果有格式说明的不匹配,并传递给scanf函数的arguements。 是否标准定义的呢?
随着的printf
功能来讲,我理解从一些参考和实验以下。
%c
打印的字符等效的整数值。 还使用的%d
打印字符的ASCII值(整数表示)是可接受的。 同样,什么是行为scanf
,如果有格式说明的不匹配,并传递给scanf函数的arguements。 是否标准定义的呢?
可变参数(那些匹配省略号, ...
)是默认促进的 。 这意味着,所有短整型被提升到int
(或无符号,根据需要)。 还有整数和字符(没有什么区别,我相信 )。 之间的差%d
和%c
在printf
是该值仅仅是如何被格式化的 。
scanf
是鱼的不同水壶。 所有你传递参数的指针 。 有指针中没有默认的推广,并且您传递指针对象的类型相匹配的确切格式说明它是至关重要的。
在这两种情况下,如果你的格式说明不匹配提供的参数(例如,通过一个int *
的%p
中printf
),结果是不确定的行为 ,这是远远比做“不可预知”雪上加霜-这意味着你的程序简直是病态的。