tôi có chương trình sau đâyTrình định dạng định dạng cho ký tự ngắn chưa được ký là gì?
#include <stdio.h>
int main(void)
{
unsigned short int length = 10;
printf("Enter length : ");
scanf("%u", &length);
printf("value is %u \n", length);
return 0;
}
nào khi biên soạn sử dụng gcc filename.c
ban hành sau cảnh báo (trong dòng scanf()
).
warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat]
sau đó tôi gọi các C99 specification - 7.19.6 Formatted input/output functions
và không thể hiểu được format specifier chính xác khi sử dụng các từ bổ nghĩa chiều dài (như short
, long
, vv) với unsigned
cho int
kiểu dữ liệu.
Có phải %u
thông số chính xác unsigned short int
? Nếu vậy tại sao tôi nhận được cảnh báo nêu trên ?!
EDIT: Hầu hết thời gian, tôi đã cố gắng %uh
và nó vẫn đưa ra cảnh báo.
'printf ("% u \ n ", (chiều dài không dấu); // 'luôn hoạt động, vì thông số C99 bạn đọc đảm bảo rằng' sizeof (short) <= sizeof (int) '(nhưng câu trả lời thực tế cho câu hỏi này dưới đây dĩ nhiên đẹp hơn) – Philip
Không cần dàn diễn viên; quảng cáo mặc định sẽ chăm sóc nó. –