VC++下可以扶持'signed long long'和'unsigned long long'的数据类型定义吗?

yangsongx 2007-06-18 01:36:16
移稙代码时发现的一个问题,

在Linux下,可以定义unsigned long long数据类型:

typedef unsigned long long ULONG64;

但是在Windows下,VC会对上一行报错:error C2632: 'long' followed by 'long' is illegal

请问是怎么回事啊?
...全文
1120 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
csliyuan 2010-08-02
  • 打赏
  • 举报
回复
__int64 a; //定义64 bits有符号整数
unsigned __int64 b; //定义64 bits无符号整数
a = -9223372036854775807;
b = 18446744073709551615;
printf("%I64u\n",b); //输出64 bits无符号整数
printf("%I64X\n",b); //以十六进制形式输出64 bits整数
printf("%I64d\n",a); //输出64 bits有符号整数
milksea 2007-06-18
  • 打赏
  • 举报
回复
用taodm的办法。
jixingzhong 2007-06-18
  • 打赏
  • 举报
回复
【Ref】
3、新增数据类型
_Bool
值是0或1。C99中增加了用来定义bool、true以及false宏的头文件夹<stdbool.h>,以便程序员能够编写同时兼容于C与C++的应用程序。在编写新的应用程序时,应该使用

<stdbool.h>头文件中的bool宏。

_Complex and _Imaginary
C99标准中定义的复数类型如下:float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary.
<complex.h>头文件中定义了complex和imaginary宏,并将它们扩展为_Complex和_Imaginary,因此在编写新的应用程序时,应该使用<stdbool.h>头文件中的complex和imaginary宏。

long long int
C99标准中引进了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64 - 1)。long long int能够支持的整数长度为64位。


更多内容请看:【当然,看标准文档更好】
C89和C99标准比较:
http://www.programfan.com/blog/article.asp?id=14051
jixingzhong 2007-06-18
  • 打赏
  • 举报
回复
long long 是C99扩展内容之一,
VC6不支持,
但是VS 2005可以 。。。
huashizhixin 2007-06-18
  • 打赏
  • 举报
回复
试了一下
vc6不可以
spofmy 2007-06-18
  • 打赏
  • 举报
回复
顶一下
taodm 2007-06-18
  • 打赏
  • 举报
回复
__int64和unsigned __int64
xharry 2007-06-18
  • 打赏
  • 举报
回复

你用的是VC6吧,VS2005支持这么写

long long 是C99的类型,如果编译器不支持C99,就会报错
  • 打赏
  • 举报
回复
VC8是可以的
freshui 2007-06-18
  • 打赏
  • 举报
回复
VC6 不可以 vc7和VC8可以的
VC6对C++标准支持的不好, 这个不支持

你应该换编译器了, VC6是一个很糟糕的编译器

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧