相关疑难解决方法(0)

如何printf uint64_t?失败:"格式中的虚假尾随'%'

我写了一个非常简单的printf uint64_t测试代码:

#include <inttypes.h>
#include <stdio.h>

int main()
{
  uint64_t ui64 = 90;
  printf("test uint64_t : %" PRIu64 "\n", ui64);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用ubuntu 11.10(64位)和gcc版本4.6.1进行编译,但失败了:

main.cpp: In function ‘int main()’:
main.cpp:9:30: error: expected ‘)’ before ‘PRIu64’
main.cpp:9:47: warning: spurious trailing ‘%’ in format [-Wformat]
Run Code Online (Sandbox Code Playgroud)

c c++

132
推荐指数
1
解决办法
10万
查看次数

很长一段时间用C/C++

我在GNU的C++编译器上尝试这个代码,我无法理解它的行为:

#include <stdio.h>;

int main()
{
    int  num1 = 1000000000;
    long num2 = 1000000000;
    long long num3;
    //num3 = 100000000000;
    long long num4 = ~0;

    printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
    printf("%d %ld %lld %llu", num1, num2, num3, num4);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我取消注释注释行时,代码不会编译并给出错误:

错误:对于long类型,整数常量太大

但是,如果代码按原样编译并执行,则会产生远大于10000000000的值.

为什么?

c++ types long-integer

82
推荐指数
3
解决办法
24万
查看次数

标签 统计

c++ ×2

c ×1

long-integer ×1

types ×1