"long int a=2"和"int a=2L"有什么区别?
What is difference between "long int a=2" and "int a=2L"?
unsigned int a=2
和int a=2U
之间有什么区别
此外,
sizeof(a)
运算符为int a=2
和int a=2L
提供相同的值,为什么?这个尺寸不应该加倍吗。
更新:谢谢大家的回答。这是夏天:
long int
或int
是用来声明变量的类型。CCD_ 8或CCD_ 9是用于初始化变量的值- 变量的大小是由类型声明的,而不是由其初始化声明的,所以两者的大小都相同
在C++中,所有变量都用类型声明。C++强制1显式指定类型,但根本不强制初始化变量。
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
的声明类型"更重要"。
1BTW C++支持"类型推理";如果您希望初始值设定项的类型很重要,可以使用它:
auto a = 2L; // "a" has type "long int"
auto b = 2; // "b" has type "int"
;long int a=2〃;以及";int a=2L";?
前者将变量a
定义为具有从值2
初始化的类型long int
,后者将其定义为具有由值2L
初始化的类型int
。初始化程序隐式转换为变量的类型,并且不影响变量的类型。
或者
long char c='a'
和char c=L'a'
之间有什么区别
前者将变量c
定义为具有从值'a'
初始化的类型long char
,后者将其定义为具有由值L'a'
初始化的类型char
。由于类型long char
不存在,因此前者是一个错误。L'a'
的类型被称为wchar_t
,而不是long char
,在后一种情况下,再次转换为变量的类型。
或者
unsigned int a=2
和int a=2U
之间有什么区别
前者将变量a
定义为具有从值2
初始化的类型unsigned int
,后者将其定义为具有由值2U
初始化的类型int
。同样,初始化程序不会影响变量的类型。
此外,
sizeof(a)
运算符为int a=2
和int a=2L
提供相同的值,为什么?这个尺寸不应该加倍吗。
由于它们都将a
定义为类型int
,因此sizeof(a)
应该为这两者提供sizeof(int)
。
#include <stdio.h>
int main()
{
int a1=2; //a1=2
int a2=2L; //a2=2
int a3=2.5673; //a3=2
int a4='A'; //a4=65
return 0;
}
这里,即使a3
和a4
的值分别是float
和char
,该值也将被转换为int,因为a3
和a4
被声明为int
。以同样的方式,即使a2
的值被设置为2L,该值也将被转换为int
。变量不依赖于值,而是依赖于类型声明。int
a永远是一个整数,不管它的值是多少
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- "类模板示例<int>;"语句对 C++11 是什么意思?
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 关于int :0有什么特别之处在C++
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- ((int) a) 和 (int(a)) 之间的区别是什么?
- 在 C 和 C++ 中作为函数参数,int **a 和 int a[][] 之间有什么确切的区别
- map<string, int> m= {}; 在C++中是什么意思?
- 有什么方法可以使用 int 变量来完成组件名称吗?
- int x_ 和 int x 在C++中有什么区别
- 行 - " vector<int> used(adj.size(), 0); "是什么意思?
- int** a = new int*[n]();这个函数有什么作用?
- *(int*)&data[18]在这段代码中实际上做了什么?
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- "new int * **[10]"做什么?
- 什么是int(*)[]类型
- 什么是变量均值'int border = borderType & ~BORDER_ISOLATED'?
- 代码中的"vector<<int>vector>&index"是什么意思?