C++ __int64的printf用法

      在做数据通信的项目中,由于服务器长期运行产生的数据通信的字节不断增加,正常的数据类型的大小已经不能满足要求了。long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就 是说,常规的32位整数只能够处理40亿以下 的数。


        那遇 到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展 了。不同的编译器对64位整数的扩展有所不同。基于数据项目通信的需 要,下面仅介绍VC6.0的使用方法。
  VC的64位整数 分别叫做__int64与unsigned __int64,其范 围分别是[-2^63, 2^63)与[0,2^64),即-9223372036854775808~9223372036854775807与0~18446744073709551615(约1800亿亿)。对64位整数 的运算与32位整数基本相同,都支持四则运算与位运算等。当进行64位与32位的混 合运算时,32位整数会被隐式转换成64位整 数。但是,VC的输入输出与__int64的兼容 就不是很好了,如果你写下这样一段代码:

1 __int64 a;
2 cin >> a;
3 cout << a;

那么,在 第2行会收到“error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '__int64' (or there is no acceptable conversion)”的错 误;在第3行会收到“error C2593: 'operator <<' is ambiguous”的错误。那是不是就不能进行输入输出呢?当然不是,你可以使用C的写 法:
scanf("%I64d",&a); //注意此处是大写 i,不是l
printf("%I64d",a);
就可以正确输入输出了。当使用unsigned __int64时,把"I64d"改为"I64u"就可以 了。
  OJ通常使 用g++编译器。其64位扩展方 式与VC有所不同,它们分别叫做long long 与 unsigned long long。处理规 模与除输入输出外的使用方法同上。对于输入输出,它的扩展比VC好。既可以使用
1 long long a;
2 cin>>a;
3 cout<<a;
也可以使用
scanf("%lld",&a);
printf("%lld",a);

使用无符号数时,将"%lld"改成"%llu"即可。
  最后我补充一点:作为一个特例,如果你使用的 是Dev-C++的g++编译器,它使用的是"%I64d"而非"%lld"。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`_tprintf` 是一个在 Windows 平台下使用的函数,其功能类似于 `printf`,用于向控制台或文件输出格式化的字符串。它支持不同的字符集(如 ANSI、Unicode 等),因此在使用时需要根据实际情况选择不同的版本,如 `_tprintf`、`_ftprintf`、`_stprintf` 等。 `_tprintf` 的使用方法与 `printf` 类似,但由于要支持不同的字符集,需要使用格式化字符串的前缀来指定使用的字符集类型。例如: - `%s`:表示一个 ANSI 字符串,使用 ASCII 字符集。 - `%S`:表示一个 Unicode 字符串,使用 UTF-16 字符集。 - `%hs`:表示一个 ANSI 字符串,使用当前代码页的字符集。 - `%ls`:表示一个 Unicode 字符串,使用 UTF-16 字符集。 - `%ws`:表示一个 Unicode 字符串,使用 UTF-16 字符集。 以下是一个简单的示例: ```c++ #include <tchar.h> #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { TCHAR szText[] = _T("Hello, world!"); _tprintf(_T("Text: %s\n"), szText); return 0; } ``` 在这个示例中,我们首先定义了一个 `TCHAR` 类型的字符串 `szText`,它会根据编译时定义的字符集类型自动转换为相应的字符串类型。然后使用 `_tprintf` 输出这个字符串,并在字符串格式化时使用 `%s` 指定使用 ASCII 字符集。 需要注意的是,如果你的代码中使用了 `_tprintf`,那么你需要在项目的属性中设置“字符集”选项,以指定默认的字符集类型。如果你使用的是 Visual Studio,可以在项目属性的“常规”选项卡中找到这个选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值