C什么是long unsigned int的简短形式

ice*_*Tea 6 c gcc types

当用GCC编译我的程序时,我得到以下警告:

format ‘%d’ expects type ‘int’, but argument 2 has type ‘long unsigned int
Run Code Online (Sandbox Code Playgroud)

现在只是通过玩耍我意识到%lo修复了警告.但是我真的不明白我在做什么.

是否有命名约定来获取类型的简短形式?例如,int是%d,为什么?

谢谢!

Mys*_*ial 24

long unsigned int = unsigned long
Run Code Online (Sandbox Code Playgroud)

%lu用来打印那些.

同样地,%llu是为了unsigned long long.


%d    -   int
%u    -   unsigned
%ld   -   long
%lld  -   long long
%lu   -   unsigned long
%llu  -   unsigned long long
Run Code Online (Sandbox Code Playgroud)


Cal*_*leb 1

但是我真的不明白我在做什么。

您要做的就是告诉printf函数如何显示您在格式字符串之后提供的数据。您可能会发现它%lo并没有真正打印出您期望的结果——它打印了正确的数据,但是以八进制(基数 8)格式。

是否有命名约定来获取类型的缩写形式?例如int是%d,为什么?

“简短形式”称为格式说明符。没有任何约定可以让您派生适当的 printf 格式说明符。您只需在适当的参考文献中查找它们即可。