相关疑难解决方法(0)

直接初始化unsigned short的标准行为

我今天注意到在示例代码中:

void print(unsigned short a) {
   std::cout << a << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

初始化和使用的工作方式如下:

print(short (5));
Run Code Online (Sandbox Code Playgroud)

但不是这样的:

print(unsigned short(6));
Run Code Online (Sandbox Code Playgroud)

main.cpp:16:8:错误:在'unsigned'打印之前预期的primary-expression(unsigned short(6));

并且它与该类型无关,因为这也有效:

typedef unsigned short ushort;
print(ushort (6));
Run Code Online (Sandbox Code Playgroud)

实例.

所以我去搜索标准关于值初始化的内容.事实证明:

值初始化的效果是:

1)如果T是类型...

2)如果T是非联盟类型......

2)如果T是类型...

3)如果T是数组类型,..

4)否则,对象是零初始化的.

为便于阅读而进行的修改. 原始来源.

有关POD类型值初始化的规则是什么?unsigned合格类型无法初始化的原因是什么?这更多地与他们的事实有关rvalues吗?

c++ syntax casting initialization language-lawyer

16
推荐指数
2
解决办法
1228
查看次数

标签 统计

c++ ×1

casting ×1

initialization ×1

language-lawyer ×1

syntax ×1