C int 数据类型及其变体

标签 c variables types int

大家好,今天我在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'.

感谢您花时间阅读我的问题。上帝保佑。

最佳答案

您正在将 Fnum 变量传递给类型为 int 的 printf,但它需要 long long。这与一个 long long 能否 容纳 256 关系不大,只是您选择的变量类型为 int

如果您只想打印 256,您可以获得一个类型为 unsigned long long 的常量,如下所示:

printf("The number %d in long long specifier is %lld\n" ,256 , 256ULL);

或投:

printf("The number %d in long long specifier is %lld\n" , Fnum , (long long int)Fnum);

关于C int 数据类型及其变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5571470/

相关文章:

C 编程模板数据类型

c - 不稳定的 openssl/rsa 行为 : RSA_EAY_PRIVATE_DECRYPT:padding check failed

c - C 中未初始化的 boolean 数组的默认值是多少?

c - 内联注释编译器构造的正则表达式

Javascript函数变量作用域

c - 平均值计算器 - 为什么嵌套在 while 循环中的 "var += var;"不起作用?

python - 为什么 self 不用于类方法之外的类变量?

c# - 有没有办法编写适用于多种类型的扩展方法?

c - C语言中如何分别对小数点前后的数字求和?

c - 无法处理号码 600851475143,但我可以完美处理 13195