tại sao% d là viết tắt của Integer?


78

Tôi biết điều này nghe có vẻ không hiệu quả, nhưng tôi đang tìm cách ghi nhớ tất cả các mã định dạng cho printfcuộc gọi. %s, %p, %fTất cả đều rõ ràng, nhưng tôi không thể hiểu được %dđến từ đâu. Đã %iđược thực hiện bởi một cái gì khác?


21
Đoán tốt nhất của tôi là số thập phân
Juan Mendes

Có, tuy nhiên, đây là loại câu hỏi thú vị +1, mỉa mai.
Daniel

Mặc dù nó không phải là một câu hỏi lập trình thật sự, và tôi có xu hướng để đóng những :)
Juan Mendes

9
"d" là viết tắt của "Does là viết tắt của số nguyên". Vừa đủ dễ.
Thuyền đơn

Câu trả lời:


98

Nó là viết tắt của " decimal " (cơ số 10), không phải "số nguyên". Bạn có thể sử dụng %xđể in ở hệ thập lục phân (cơ số 16) và %oin ở hệ bát phân (cơ số 8). Một số nguyên có thể nằm trong bất kỳ cơ sở nào trong số này.

Trong printf(), bạn có thể sử dụng %inhư một từ đồng nghĩa %d, nếu bạn muốn biểu thị "số nguyên" thay vì "thập phân", nhưng %dthường được ưu tiên hơn vì nó cụ thể hơn.

Trên đầu vào, sử dụng scanf(), bạn có thể sử dụng sử dụng cả hai %i%d. %icó nghĩa là phân tích cú pháp nó dưới dạng một số nguyên trong bất kỳ cơ sở nào (bát phân, thập lục phân hoặc thập phân, như được chỉ ra bởi một 0hoặc 0xtiền tố), trong khi %dcó nghĩa là phân tích cú pháp nó dưới dạng số nguyên thập phân.

Dưới đây là một ví dụ về tất cả chúng đang hoạt động:

Vì vậy, bạn chỉ nên sử dụng %inếu bạn muốn cơ sở đầu vào phụ thuộc vào tiền tố; nếu cơ sở đầu vào cần được cố định, bạn nên sử dụng %d, %xhoặc %o. Đặc biệt, việc một hàng đầu 0đặt bạn ở chế độ bát phân có thể khiến bạn bắt kịp.


sau đó câu hỏi thực sự là "tại sao số nguyên gọi java 'int'", khi một dài và một ngắn và một byte ... cũng được ints
cừu bharal

8

http://en.wikipedia.org/wiki/Printf_format_string dường như nói rằng nó dành cho số thập phân như tôi đã đoán

d,i

int dưới dạng số thập phân có dấu. '% d' và '% i' đồng nghĩa với đầu ra, nhưng khác nhau khi được sử dụng với scanf () cho đầu vào (sử dụng% i sẽ diễn giải một số dưới dạng thập lục phân nếu nó đứng trước 0x và bát phân nếu nó đứng trước 0.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.