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

时间:2022-09-15 18:26:19
移稙代码时发现的一个问题, 

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

typedef unsigned long long   ULONG64;

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

请问是怎么回事啊?

10 个解决方案

#1


VC6 不可以 vc7和VC8可以的
VC6对C++标准支持的不好, 这个不支持

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

#2


VC8是可以的

#3



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

long long 是C99的类型,如果编译器不支持C99,就会报错

#4


__int64和unsigned __int64

#5


顶一下

#6


试了一下
vc6不可以

#7


long long 是C99扩展内容之一,
VC6不支持,
但是VS 2005可以 。。。

#8


【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

#9


用taodm的办法。

#10


__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有符号整数

#1


VC6 不可以 vc7和VC8可以的
VC6对C++标准支持的不好, 这个不支持

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

#2


VC8是可以的

#3



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

long long 是C99的类型,如果编译器不支持C99,就会报错

#4


__int64和unsigned __int64

#5


顶一下

#6


试了一下
vc6不可以

#7


long long 是C99扩展内容之一,
VC6不支持,
但是VS 2005可以 。。。

#8


【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

#9


用taodm的办法。

#10


__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有符号整数