是有什么区别unsigned int a=2和int a=2U
或者如果long char c='a'抛出错误,那么为什么不char c=L'a'。
还,
sizeof(a)运算符为int a=2and提供相同的值int a=2L,为什么?尺寸不应该增加一倍。
在 C++ 中,所有变量都用类型声明。C++ 强制1您明确指定类型,但根本不强制您初始化变量。
long int a = 2;
long int b = 2L;
long int c;
Run Code Online (Sandbox Code Playgroud)
此代码生成 3 个相同类型的变量long int。
int a = 2;
int b = 2L;
int c;
Run Code Online (Sandbox Code Playgroud)
此代码生成 3 个相同类型的变量int。
类型的概念大致是“变量可以采用的所有值的集合”。它不会(也不能)因变量的初始值-无论是2或2L或其他任何东西。
所以,如果你有两个不同类型但值相同的变量
int a = 2L;
long int b = 2;
Run Code Online (Sandbox Code Playgroud)
它们之间的区别在于它们可以在代码中做什么。例如:
a += 2147483647; // most likely, overflow
b += 2147483647; // probably calculates correctly
Run Code Online (Sandbox Code Playgroud)
变量的类型从它被定义的那一刻起就不会改变。
另一个例子:
int x = 2.5;
Run Code Online (Sandbox Code Playgroud)
这里的类型x是int,并且被初始化为2。尽管初始化器的类型不同,但C++认为声明类型x“更重要”。
1 BTW C++ 支持“类型推断”;如果您希望初始化器的类型很重要,则可以使用它:
auto a = 2L; // "a" has type "long int"
auto b = 2; // "b" has type "int"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2173 次 |
| 最近记录: |