![]() |
1
3
Since C++17
,代码的正确输出为
在C++ 17之前,行为是未定义的。C++ 17标准引入了操作数的左到右排序。
如果编译器没有在C++ 17模式中给出预期输出
|
![]() |
2
2
您没有指定编译器/标志,所以我鼓励您确保您正在构建C++ 17(CLAN/G++标志)。
说明: 事实上,这个意外的结果与流操作没有特别的关系。这和 未排序的计算 [intro.execution] :
但你看,
再加上这个 [expr.shift] :
clang 6.0.1给出了这个信息警告 根据规范的摘录 不符合标准(!)
你可以看到它 here live . this enlightening SO link 它指的是关于clang和GCC的错误报告。 |
![]() |
3
0
在打印任何内容之前,将以未定义的顺序计算这两个子表达式。所有人都给
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |