Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Khác biệt giữa %d và %i format specifier trong C


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.