或者什么区别unsigned int a=2
和int a=2U
“long int a = 2”和“int a = 2L”有什么区别?
long char c='a'
之间或者如果抛出错误,那么为什么不char c=L'a'
。
此外,
sizeof(a)
运营商给出了int a=2
和int a=2L
相同的值,为什么呢?不应该增加一倍。
或者什么区别unsigned int a=2
和int a=2U
“long int a = 2”和“int a = 2L”有什么区别?
long char c='a'
之间或者如果抛出错误,那么为什么不char c=L'a'
。
此外,
sizeof(a)
运营商给出了int a=2
和int a=2L
相同的值,为什么呢?不应该增加一倍。
在C++中,所有变量都是用类型声明的。 C++力量您明确指定类型,但不强制您初始化变量。
long int a = 2;
long int b = 2L;
long int c;
此代码使相同类型的3个变量long int
。
int a = 2;
int b = 2L;
int c;
该代码使3个变量的相同类型int
。
类型的构思是大致“该组中的变量可以取所有值的”。它不(也不能)取决于变量的初始值 - 无论是2
还是2L
或其他。
所以,如果你有不同的类型,但相同的值
int a = 2L;
long int b = 2;
的两个变量之间的区别是什么,他们可以在代码做进一步。例如:
a += 2147483647; // most likely, overflow
b += 2147483647; // probably calculates correctly
变量类型的将不会从它的开始定义的点改变。
又如:
int x = 2.5;
这里的x
类型为int
,即使初始化有不同的类型它初始化为2,C++认为“更重要”的x
申报类型。
BTW C++有 “类型推断” 支持;
auto a = 2L; // "a" has type "long int"
auto b = 2; // "b" has type "int"
知道了, 的是,'INT A = 2L',虽然与值“2”,这是长整型的初始化,一个仍然整数类型。 一个类型的变量可以用另一个类型的值初始化 – CodeChari
我试过了:'auto a = 2L;'它给出错误:**'a'没有命名类型**为什么? – CodeChari
也许你正在使用一个旧的编译器。这种使用'auto'的语法比较新(C++ 11,5岁)。另请参阅[这里](http://stackoverflow.com/q/10363646/509868)和[这里](http://stackoverflow.com/q/37582094/509868)提示如何解决这个问题。 – anatolyg
What is difference between "long int a=2" and "int a=2L"?
前者定义了一个变量a
为具有从值2
初始化类型long int
,后者将其定义为具有与所述值2L
初始化类型int
。初始化程序隐式转换为变量的类型,并不影响变量的类型。
Or what is the difference between
long char c='a'
andchar c=L'a'
前者定义了一个变量c
为具有从值'a'
初始化类型long char
,后者将其定义为具有与所述值L'a'
初始化类型char
。由于long char
类型不存在,前者是错误的。 L'a'
的类型被称为wchar_t
,而不是long char
,并且在后一种情况下又被转换为变量的类型。
or what is the difference between
unsigned int a=2
andint a=2U
前者定义了一个变量a
为具有从值2
初始化类型unsigned int
,后者将其定义为具有与所述值2U
初始化类型int
。再一次,初始化不影响变量的类型。
Also,
sizeof(a)
operator gives the same value forint a=2
andint a=2L
, why? Shouldn't the size be doubled.
,因为它们都定义为a
型int
,sizeof(a)
应该给sizeof(int)
两种。
'长char'不存在:如果你想初始化的类型是很重要的,你可以使用它。 – interjay
难道你不会在'int a = 2L;'得到一个编译器警告“将long分配给int”吗? – rustyx
不,我没有得到任何错误或警告(我使用的代码块) – CodeChari