C++11中的自动类型扣除和类型转换有什么区别
What is the difference between Automatic type deduction in C++11 and type casting
我在两个概念之间感到困惑,即 C++11 中引入的"auto"关键字和类型转换 (dynamic_cast/static_cast(。
C++11 中的"auto"关键字是否在内部使用类型转换?
让我们用一个例子来保持简单
unsigned short s = 65535;
auto positive = s;
auto negative = (short) s;
std::cout << positive << std::endl; // prints 65535
std::cout << negative << std::endl; // prints -1
在此代码中:
- 在第一行中,您只需使用值初始化一个
unsigned short
变量655355
- 在第二行中,初始化变量
positive
,并让编译器从其初始值设定项推断其类型(请参阅链接(。因此,positive
将被unsigned short
,因为它的初始值设定项具有该类型。 - 在第三行中,
negative
的类型将被推导出为short
,因为你正在将s
的类型从unsigned short
转换为short
。
请注意,positive
和negative
变量将保存相同的值,在十六进制中是0xffff
,但由于它们的类型,它们以不同的方式解释。
因此,自动和铸造之间没有区别,好像它们是可比的,它们是不同的概念。
auto
将根据某些规则推断类型或变量- 强制转换将更改变量的类型
我建议您阅读斯科特·迈耶斯(Scott Meyers(的《有效的现代C++》,以了解auto
的工作原理。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- C++11中的自动类型扣除和类型转换有什么区别
- GCC 编译器对类型转换有什么作用?为什么 mac 和 Linux 上的输出不同
- 我的老师不像其他人那样进行类型转换.有谁知道他在做什么?
- 当我们递增下面的类型转换指针时会发生什么?
- 在C++中对指针进行类型转换"sideways"时会发生什么情况
- 类型转换时C++ (void *) 变量和 (void *&) 变量有什么区别
- 类型转换时这是什么意思 *(int*)&x?
- C++ get 和类型转换之间的用法有什么区别?我应该使用哪一个?
- 在C++中实现相关类型之间的自动类型转换的最佳方法是什么?
- 如果我不做const_cast<char*>而简单地使用(char *)类型转换有什么害处吗?
- 这段c++类型转换代码在做什么?
- 处理模棱两可的类型转换/转换的正确方法是什么?
- c++中这两种类型转换方法的区别是什么?
- 使用 static_cast 进行无效的类型转换,我应该使用什么正确的转换
- 在 C++ 中定义类型转换运算符模板的正确方法是什么?
- 在计算过程中将int类型转换为long long的优点是什么?
- 你认为是什么让这个C++代码变慢了?(它循环通过ADODB记录集,将COM类型转换为字符串,并填充ostringstre