Format Specifiers (Chỉ định định dạng)
Trong C, %d và %i là các format specifier: %d chỉ định kiểu thập phân (decimal), %i chỉ định kiểu nguyên (integer). Khi dùng printf(), không có khác biệt. Nhưng với scanf(), khác biệt xuất hiện: %i tự phát hiện cơ số (hex, oct, dec), %d luôn giả định cơ số 10.
Ví dụ (C)
#include <stdio.h>
int main() {
int num1, num2;
int num3, num4;
scanf("%i%d", &num1, &num2);
printf("%i\t%d\n", num1, num2);
num3 = 010; // số bát phân
num4 = 010;
printf("%i\t%d", num3, num4);
return 0;
}
Kết quả đầu ra
32767 -498932064 8 8
Giải thích: 010 là số bát phân (oct = 8). scanf với %d đọc thành 10 (thập phân), với %i đọc đúng là 8 (bát phân). printf với cả hai đều in đúng giá trị octal.