85.9k views
5 votes
Write a program to test the difference between %d and %i conversion

1 Answer

4 votes
void test(char *s)
{
int i, d;
sscanf(s, "%i", &i);
printf("%s converts to %i using %%i\\", s, i);
sscanf(s, "%d", &d);
printf("%s converts to %d using %%d\\", s, d);
}

int main()
{
test("123");
test("0x123");
return 0;
}

outputs:
123 converts to 123 using %i
123 converts to 123 using %d
0x123 converts to 291 using %i
0x123 converts to 0 using %d

As you can see, %i is capable of parsing hexadecimal, whereas %d is not. For printf they're the same.
User Ronszon
by
8.4k points