在printf格式串中使用时,二者没有区别.但是,在scanf格式串中%d只能与十进制(基数为10)形式的整数相匹配,而%i则可以匹配用八进制(基数为8),十进制或十六进制(基数为16)表示的整数.如果输入的数有前缀0(例如056),那么%i会把它作为八进制数来处理;如果输入的数有前缀0x或0X(例如0x56),那么%i把它作为十六进制数来处理.如果用户意外地将0放在数的开始处,那么用%i代替%d读取数可能有意料之外的结果.由于这是一个陷阱,所以建议坚持采用%d.
在printf格式串中使用时,二者没有区别.但是,在scanf格式串中%d只能与十进制(基数为10)形式的整数相匹配,而%i则可以匹配用八进制(基数为8),十进制或十六进制(基数为16)表示的整数.如果输入的数有前缀0(例如056),那么%i会把它作为八进制数来处理;如果输入的数有前缀0x或0X(例如0x56),那么%i把它作为十六进制数来处理.如果用户意外地将0放在数的开始处,那么用%i代替%d读取数可能有意料之外的结果.由于这是一个陷阱,所以建议坚持采用%d.
本文标题:%i
本文链接:https://www.haomeiwen.com/subject/dnvbhttx.html
网友评论