【发布时间】:2011-07-31 02:21:45
【问题描述】:
您好,今天我在 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;
}
问题:
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'.
感谢您花时间阅读我的问题。上帝保佑。
【问题讨论】: