car*_*995 1 c variables int types
问候,今天当我在C99标准中尝试C语言时,我遇到了一个我无法理解并需要专家帮助的问题.
代码:
#include <stdio.h>
int main(void)
{
int Fnum = 256; /* The First number to be printed out */
printf("The number %d in long long specifier is %lld\n" , Fnum , Fnum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题:
1.)当我尝试运行此代码时,此代码提示我一条警告消息.
2.)但奇怪的是,当我尝试将说明符更改%lld为%hd或者%ld,在执行期间未显示警告消息,并且在控制台上打印的值是正确的数字256,即使我,一切似乎也正常尝试使用
%u,%hu也是%lu.简而言之,当我使用long long说明符的变体时,警告消息和错误的数字打印才会发生.
3.)为什么会发生这种情况?我认为long long的内存大小足以保持值256,但为什么它不能用于打印出适当的值?
警告消息:(对于上面的源代码)
C:\Users\Sam\Documents\Pelles C Projects\Test1\Test.c(7): warning #2234: Argument 3 to 'printf' does not match the format string; expected 'long long int' but found 'int'.
Run Code Online (Sandbox Code Playgroud)
感谢您花时间阅读我的问题.上帝保佑.
你将Fnum变量传递给printf,这是打字的int,但它是期待的long long.这与长long是否可以容纳256只有很小的关系,只是你选择的变量是键入的int.
如果你只想打印256,你可以获得一个输入的常量,unsigned long long如下所示:
printf("The number %d in long long specifier is %lld\n" ,256 , 256ULL);
Run Code Online (Sandbox Code Playgroud)
或演员:
printf("The number %d in long long specifier is %lld\n" , Fnum , (long long int)Fnum);
Run Code Online (Sandbox Code Playgroud)