Lập trình C: Sự khác biệt giữa mã định dạng %d và %i


Đăng ký nhận thông báo về những video mới nhất

Trình chỉ định định dạng là một chuỗi được tạo thành bởi dấu phần trăm ban đầu (%) cho biết một ký hiệu định dạng, được sử dụng để chỉ định loại và định dạng của dữ liệu sẽ được truy xuất từ ​​luồng và được lưu trữ vào các vị trí được trỏ bởi các đối số bổ sung. Tóm lại, nó cho chúng ta biết loại dữ liệu nào cần lưu trữ và loại dữ liệu nào cần in.

Ví dụ - Nếu chúng ta muốn đọc và in số nguyên bằng cách sử dụng hàm scanf () và printf (), thì% i hoặc% d được sử dụng nhưng có sự khác biệt nhỏ trong cả định dạng % i và % d .

%d chỉ định số nguyên hệ 10 có dấu trong khi %i chỉ định số nguyên hệ khác 10.

Hành vi của %d và %i là tương tự như nhau đối với printf()

Không có sự khác biệt giữa các chỉ định định dạng% i và% d cho printf. Hãy xem xét một ví dụ sau.

// Chương trình C demo
// hành vi của %i và %d
// đối với lệnh printf
#include <stdio.h>

int main(){
  int num = 9;

  // in giá trị dùng %d
  printf("\nGia tri cua num su dung %%d la: %d",num);

  // in giá trị dùng %i
  printf("\nGia tri cua numb su dung %%i la: %i",num);

  return 0;
}

Kết quả:

Gia tri cua num su dung %d la: 9
Gia tri cua numb su dung %i la: 9

Hành vi của %d và %i là khác nhau trong scanf()

%d ứng với cơ số 10 trong khi %i tự động phát hiện cơ số. Do đó, cả hai chỉ định hoạt động khác nhau khi chúng được sử dụng với mỗi chỉ định đầu vào. Vì vậy, 012 sẽ là 10 với %i nhưng là 12 với %d.

  • %d nhận giá trị số nguyên là số nguyên thập phân có dấu, tức là nó nhận giá trị âm cùng với giá trị dương nhưng giá trị phải ở dạng thập phân nếu không nó sẽ in ra giá trị rác. Hãy xem xét một ví dụ dưới đây.
  • %i nhận giá trị số nguyên là giá trị số nguyên với kiểu thập phân, thập lục phân hoặc bát phân.

Để nhập giá trị ở định dạng thập lục phân - giá trị phải được cung cấp ở trước "0x" và giá trị ở định dạng bát phân - giá trị phải được cung cấp trước "0".

Hãy xem xét một ví dụ sau.

#include <stdio.h>

int main(){
  int a, b, c;

  printf("\nNhap vao mot so nguyen: ");
  scanf("%d", &a);

  printf("\nNhap vao mot so nguyen he 8 (bat dau bang 0): ");
  scanf("%i", &b);

  printf("\nNhap vao mot so nguyen he 16 (bat dau bang 0x): ");
  scanf("%i", &c);

  printf("\na = %i, b = %i, c = %i", a, b, c);

  return 0;
}

Kết quả:

Nhap vao mot so nguyen: 10

Nhap vao mot so nguyen he 8 (bat dau bang 0): 010

Nhap vao mot so nguyen he 16 (bat dau bang 0x): 0x10

a = 10, b = 8, c = 16

Giải thích:

Giá trị thập phân của a là 10 là 10

Giá trị thập phân của b là 10 (bát phân) là 8

Giá trị thập phân của c là 10 (thập lục phân) là 16.


Nếu bạn có điều thắc mắc, bạn hãy comment cho V1Study để được giải đáp.
Bài viết này được chia sẻ bởi LongDT. Nếu bạn muốn chia sẻ bài viết, bạn hãy Đăng ký làm thành viên!
« Prev
Next »
Copied !!!