c++ - 多词类型的旧样式转换

标签 c++

int(x) 这样的单词类型转换不会触发任何警告,但是对于像 unsigned long 这样的多词类型,我该如何以类似的方式编写,long long,还是 unsigned char

(unsigned long)(x) 之类的东西会触发旧式转换警告。

如果省略括号,如unsigned long(x),就是语法错误。

假设变量 x 只是一些本地类型,如 intlong 等。绝对是 x 的类型code> 不是类或结构。

最佳答案

您可以使用typedef:

typedef unsigned long ulong;

int i;
unsigned long x= ulong(i);

这不是旧式转换警告,因为那不是转换,您正在从 int 创建一个新的 unsigned long

你也可以使用static_cast:

unsigned long y= static_cast<unsigned long>(i);

这是一种新的风格。

关于c++ - 多词类型的旧样式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133681/

相关文章:

c++ - 在第三方应用程序的窗口上绘图

c++ - 如果我有两个具有完全相同成员但名称不同的结构/类,是否有任何简单的方法可以将一个转换为另一个?

c++ - 运算符<<不匹配

c++ - C++11 中的线程不在类成员中

c++ - vbo 显示相同的对象

c++ - 使用 C++ 进行 DNS 查询

c++ - Lua C API : inserting table elements cause Debug Assertion Failed

c++ - (使用 'while' 的插入排序)和(使用 'for' 的插入排序)之间的计算时间有何不同?

c++ - 如果 std::greater<>,那么为什么是 std::less(而不是 std::lesser<>)?

c++ - 如果我发现自己定义了一个 Component 类和一个 ComponentInstance 类,我是不是做错了什么?