printf和scanf中%lli和%lld之间的差异?

时间:2017-08-21 07:06:29

标签: c++ c printf

我和我的朋友在争论%lli%lld。我通常会使用%lli,每次他都在%lldprintf中使用scanf。他声称%lli%lld不同。

GNU GCC编译器中的%lli%lld格式说明符之间是否有任何区别,或它们是否相同?

2 个答案:

答案 0 :(得分:3)

对于printf,它们完全相同。

http://en.cppreference.com/w/cpp/io/c/fprintf

  

di将带符号的整数转换为十进制表示[ - ] dddd。

     

Precision指定要显示的最小位数。默认精度为1。   如果转换后的值和精度均为0,则转换不会产生任何字符。

对于scanf,它们是不同的。以下是文档引用。

  

d匹配十进制整数。   数字的格式与strtol()的预期相同,基本参数的值为10

     

i匹配整数。   数字的格式与strtol()的预期相同,基本参数的值为0(base由解析的第一个字符确定)

如果是i,如果您的号码以0开头,则会将其解析为八进制。

http://en.cppreference.com/w/cpp/io/c/fscanf

答案 1 :(得分:0)

可能你应该看到文件......?

对于printf(),它们是等效的,但它们因scanf()而不同。

http://www.cplusplus.com/reference/cstdio/scanf/

对于说明符d,从输入流中提取的字符是任意数量的十进制数字(0-9),可选地前面带有符号(+或 - )。

对于i,它是任意数量的数字,可选地前面带有符号(+或 - )。
默认采用十进制数字(0-9),但 0前缀引入八进制数字(0-7)和0x十六进制数字(0-f)
签名论证。