【问题标题】:Why is there such an output? [duplicate]为什么会有这样的输出? [复制]
【发布时间】:2021-09-21 06:53:10
【问题描述】:

这是C程序:

int main(void)
{
    unsigned long long int number = 4294967295;
    printf("unsigned long long int size is: %d byte \n", sizeof(unsigned long long int));
    printf("this value is: %d\n", number);
    return 0;
}

这是输出:

unsigned long long int size is: 8 byte
this value is: -1

为什么输出是 -1 而不是 4294967295

【问题讨论】:

  • 查找 printf 格式字符串的文档并具体检查 %d 的含义
  • 问:为什么输出是-1而不是4294967295? A:因为你用%d打印的!不幸的是,不同的编译器对“unsigned long long”有不同的“printf”格式字符串:stackoverflow.com/questions/2844

标签: c


【解决方案1】:

在 printf 语句中,您编写了 "%d" 代表 int 而不是 "%llu" 代表 unsigned long long int

所以为了得到正确的输出,你的语句应该是

printf("this value is: %llu\n", number);

更多内容请看以下链接:

https://www.geeksforgeeks.org/data-types-in-c/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多