当用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)
但是我真的不明白我在做什么。
您要做的就是告诉printf
函数如何显示您在格式字符串之后提供的数据。您可能会发现它%lo
并没有真正打印出您期望的结果——它打印了正确的数据,但是以八进制(基数 8)格式。
是否有命名约定来获取类型的缩写形式?例如int是%d,为什么?
“简短形式”称为格式说明符。没有任何约定可以让您派生适当的 printf 格式说明符。您只需在适当的参考文献中查找它们即可。