C/C++的64位整型 不同编译器间的比较
//为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数
//结果VC中还是认为是32位的,显然不合适
//typedef signed long int TSint64;
//typedef unsigned long int TUint64;
//ANSI C中规定long long才能表示64位
//参见:http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx
//可惜VC++ 6.0 不认识 long long,会报error C2632: 'long' followed by 'long' is illegal
typedef signed long long TSint64;//It's illegal in C90. It's legel in C99.
typedef unsigned long long TUint64;
//typedef LONGLONG TSint64;//VC不认
//typedef ULONGLONG TUint64;
zz from http://www.byvoid.com/blog/c-int64/
在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”
正确
正确
错误
错误
无法编译
__int64
“lld”
错误
错误
无法编译
无法编译
错误
__int64
“%I64d”
正确
正确
无法编
相关文档:
1.分类
内部类型 和用户定义类型
2.
整形:bool ,字符型,整形
true 1 flase 0
非零 true & ......
决定找时间把数据结构复习下,从链表开始吧。这一知识点虽说并不涉及复杂的算法,不需要费尽头脑去思考来龙去脉,但是要写出完整的程序来,还是要花一些时间的。特别是如果对指针操作不够熟练,极易出错。好久没用C写程序了……
完整代码:
/*
* 单链表基本操作C版实现程序
* 包括插入、删除、查找。
*
* ......
这是我写的第一个博客日志,在此首先测试一下本个博客系统的功能情况,如分类功能,阅读的简易性,代码显示的方式等。
so:添加第一个代码程序,如下:
private void Form1_Load(object sender, EventArgs e)
{//使listView控件支持编辑功能
System.Windows ......
1 前言
长期以来,广大程序员为到底是使用Client/Server,还是使用Browser/Server结构争论不休,在这些争论当中,C/S结构的程序可维护性差,布置困难,升级不方便,维护成本高就是一个相当重要的因素。有很多企业用户就是因为这个原因而放弃使用C/S。然而当一个应用必须要使用C/S结构才能很好的实现其功能的时 ......