Bài tập C %i và %d khác nhau như thế nào??? [Archive] – Cộng đồng C Việt

View Full Version : Bài tập C %i và %d khác nhau như thế nào???

trong printf thì giống,scanf thì khác 1 tí.Trong scan thì %d nhận vào 1 số thập phân,còn %i nếu viết là 0xabc gì đấy thì nó nhận vào 1 số hex. bạn có thể nói chi tiết hơn ko, %d là số nguyên mà bạn??? sao lúc dùng scanf thì %d lại nhận số thập phân????

lttq

bạn có thể nói chi tiết hơn ko, %d là số nguyên mà bạn??? sao lúc dùng scanf thì %d lại nhận số thập phân????

%i và %d đều là format dạng số nguyên 32bit cả.Với printf thì khi đưa 2 format này vào thì không có sự khác biệt.Nhưng với scanf thì có chút khác biệt.Khi bạn nhập 1 số nguyên vào thì không vấn đề gì,nhưng nếu bạn nhập 1 số hexa vào thì %i vẫn nhận.

ví dụ :

int i=0;
scanf(“%i”,&i);
printf(“%d”,i);

khi nhập vào 0x12
thì kết quả là 18
khi nhập vào 12
thì kết quả là 12

còn nếu scanf(“%d”,&i);

nếu nhập vào 0x12
thì kết quả là 0
nếu nhập 12
thì kết quả là 12

Còn cụ thể hơn là vì sao thì nó hơi phức tạp.khi xuất nhập trên C thì nó import vào thư viện chứa hàm để call hàm bằng cách

CALL DWORD PTR địa chỉ của hàm printf hoặc scanf …. rồi dựa vào format đưa vào để thực hiện việc gán giá trị cho i.Nói chung là khá loằng ngoằng phức tạp.Bạn hiểu thế là dc rồi