我原以为大小会不同,但是两个都显示为8个字节。
#include <iostream>
using namespace std;
int main()
{
cout<<"Size of long:"<<sizeof(unsigned long)<<"\n";
cout<<"Size of Long Long:"<< sizeof(unsigned long long)<<"\n";
}
Output:
Size of long:8
Size of Long Long:8
我原以为大小会不同,但是两个都显示为8个字节。
#include <iostream>
using namespace std;
int main()
{
cout<<"Size of long:"<<sizeof(unsigned long)<<"\n";
cout<<"Size of Long Long:"<< sizeof(unsigned long long)<<"\n";
}
Output:
Size of long:8
Size of Long Long:8
int main()
{
unsigned long* ulp = 0;
unsigned long long* ullp = 0;
ulp = ullp; // illegal
}
使用g++编译它时会产生以下结果:
c.cpp: In function ‘int main()’:
c.cpp:5:11: error: cannot convert ‘long long unsigned int*’ to ‘long unsigned int*’ in assignment
还有一个区别:C++标准直到2011年才添加了long long
和unsigned long long
类型。而C语言在1999年标准中就已经加入了它们,因此早期的C++2011以前(以及C99之前)的编译器为它们提供扩展是很常见的。
标准规定,long long
必须至少与 long
相同大小,或更大。同样适用于无符号类型 long
和 int
。
实际值取决于具体的实现和硬件环境。
unsigned long long
类型?也许,C++11引入了这个类型? - Nawaz