易截截图软件、单文件、免安装、纯绿色、仅160KB

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”
正确
正确
无法编


相关文档:

C程序使用不同函数调用约定调用汇编子过程

如转载,请注明出处:http://blog.csdn.net/zhangyang0402/archive/2010/05/01/5549266.aspx
 
开发工具:VC ++ 6.0  MASM32
 
一、__cdecl调用方式
 
1.  在VC中新建Win32 Console Application, TestASM
 
2.  新建test.c
#include<stdio.h>
extern void swap(int * ......

c输入输出


格式输出:
printf(格式控制, 输出表列);
%d 十进制数  %md m为指定的宽度 若数据位数小于m,则左端补以空格;若大于m,则按实际位数输出
%ld 长整型数据  %mld 指定字段宽度
%o 八进制整数形式  %mo
%x 十六进制整数形式  %mx
%u unsigned型数据,它也可用%o或%x格式输出
%c 一个字符   ......

c/c++类型

1.分类
 内部类型 和用户定义类型
2.
 整形:bool ,字符型,整形
   true  1                   flase 0
   非零 true              & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号