像 int(x)
这样的单词类型转换不会触发任何警告,但是对于像 unsigned long
这样的多词类型,我该如何以类似的方式编写,long long
,还是 unsigned char
?
(unsigned long)(x)
之类的东西会触发旧式转换警告。
如果省略括号,如unsigned long(x)
,就是语法错误。
假设变量 x
只是一些本地类型,如 int
、long
等。绝对是 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/