我想知道long是否指定了单个数据类型,那么像int这样的东西为什么不起作用呢?我的意思是,这显然不是一个数据类型,但是有一个长的数据类型。基本上我想问的是:
int a = 0; //okay
long b = 0; //still fine
long long c = 0; //really long number but its okay....
int int d = 0; //error为什么?
发布于 2016-05-05 06:29:07
long long和int int的区别在于,long修改的是类型本身,而不是类型本身。long是long int的缩写,long long是long long int的简写。
更具体地说,int是一个类型说明符,就像char或bool一样。long是一个类型修饰符。其他类型的修饰符是unsigned、signed和short。
如果缺少其中一个修饰符,类型将返回到默认状态。如果没有signed或unsigned,那么类型将被签名。如果没有short或long,则默认大小取决于编译器和体系结构。
查看维基百科的这张桌子,了解如何组合不同类型的说明符和修饰符的完整列表。
在当前版本的C和C++标准中,long和short实际上本身就是类型说明符。不过,这并不能改变事物组合的方式。
发布于 2016-05-05 06:42:00
可以将比long长的长整数指定为long long。
但是,指定一个比int更整数的整数意味着什么呢?
更准确地说。在C++中,您有int类型,它通常是32位宽的整数.然后,可以使用修饰符short和long,如下面的示例所示:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout << "short int: " << sizeof(short int) << endl;
cout << "short: " << sizeof(short) << endl;
cout << "int: " << sizeof(int) << endl;
cout << "long int: " << sizeof(long int) << endl;
cout << "long: " << sizeof(long) << endl;
cout << "long long int: " << sizeof(long long int) << endl;
cout << "long long: " << sizeof(long long) << endl;
}在我的Linux盒上,运行g++ 4.7.2,这提供了:
short int: 2
short: 2
int: 4
long int: 8
long: 8
long long int: 8
long long: 8所以:
int是一个32位有符号整数。short int (缩写为short)是一个16位有符号整数。long int (缩写为long)是一个64位有符号整数。long long int (缩写,long long)在我的体系结构/编译器上仍然是一个64位有符号整数,但它在语言中允许在不同的架构/编译器上使用更长的整数类型(例如128位)。因此,正如威尔所解释的:在这种情况下,long是一个可以应用两次的修饰符,而int不是修饰符。
https://softwareengineering.stackexchange.com/questions/317606
复制相似问题