C/C++的64位整型(转)

文章探讨了五种主流C/C++编译器(gcc/mingw32, g++/mingw32, gcc/linux i386, g++/linux i386, Microsoft Visual C++ 6.0)对64位整型的支持情况。发现`long long`适用于gcc/g++,但不兼容VC6.0,而`__int64`仅限Win32平台。输出方面,`%lld`适用于Linux,`%I64d`适用于Win32,且`cout`在VC6.0中不支持64位整型。作者提出了一种跨平台的`printint64()`函数,其效率优于`cout`。" 82527807,6817806,Babel 转码实践与 polyfill 使用,"['JavaScript', 'Babel转换', 'ES6', '代码检查', '测试框架']
摘要由CSDN通过智能技术生成

 

在C/C++中,64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对64为整型的支持也是标准不一,形态各异。一般来说,64位整型的定义方式有long long和__int64两种(VC还支持_int64),而输出到标准输出方式有printf("%lld",a),printf("%I64d",a),和cout << a三种方式。

本文讨论的是五种常用的C/C++编译器对64位整型的支持,这五种编译器分别是gcc(mingw32),g++(mingw32),gcc(linux i386),g++(linux i386),Microsoft Visual C++ 6.0。可惜的是,没有一种定义和输出方式组合,同时兼容这五种编译器。为彻底弄清不同编译器对64位整型,我写了程序对它们进行了评测,结果如下表。

变量定义 输出方式 gcc(mingw32) g++(mingw32) gcc(linux i386) g++(linux i386) MicrosoftVisual C++ 6.0
long long "%lld" 错误 错误 正确 正确 无法编译
long long "%I64d" 正确 正确 错误 错误 无法编译
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PegasusWang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值