I'm asking about
For decimal integer conversion (
d) the output uses the
locale's alternative output digits, if any. For
example, since glibc 2.2.3 this will give Arabic-Indic digits in the Persian () locale.
printf format option
I is a glibC extension to select a locale representation for numbers. It is not defined by the C Standard and should not be used in portable code.
If the locale is properly selected and supported by your C library, calling
printf("%Id", 1); might produce a string encoding the Unicode code point U+0661
١ that is the representation of the digit one in arabic.
printf("%d", 1); always prints
1, the western representation of number one.
To make matters even more confusing,
1 is called an arabic numeral, as opposed to roman numeral
I... unrelated to the