我询问的是%Id
,而不是%ld
。
任何人都可以向我解释一下"我"确切地说:
I
对于十进制整数转换(i
,d
,u
),输出使用 区域设置的替代输出数字(如果有)。对于 例如,由于glibc 2.2.3,这将在波斯语("fa_IR"
)语言环境中给出阿拉伯语 - 印度语数字。
举个例子:
printf("%Id",1);
换句话说,%d
和%Id
之间有什么区别?
任何人都可以用简单的单词和简单的例子解释它的区别吗?
答案 0 :(得分:3)
printf
格式选项I
是一个glibC扩展,用于选择数字的区域设置表示。它不是由C标准定义的,不应在便携式代码中使用。
如果C库正确选择并支持语言环境,则调用printf("%Id", 1);
可能会生成一个字符串,编码Unicode代码点U + 0661 ١
,它是阿拉伯语中数字1的表示形式。
请参阅http://www.fileformat.info/info/unicode/char/0661/index.htm
相反,printf("%d", 1);
始终会打印1
,这是西方第一的代表。
更令人困惑的是,1
被称为阿拉伯数字,而罗马数字 I
...与...无关I
中的%Id
。