![]() |
1
9
条件运算符检查两个方向的转换。在这种情况下,由于构造函数是显式的(因此
在第二种情况下,因为操作数的类型为
要理解“不必要的”转换,您必须理解像
编辑:如果构造函数是
隐性的
?这个
段落解释如何
|
![]() |
2
7
在本标准第5.16节中,这一点非常令人困惑。重要部分见第3段。”如果e2是左值:如果e1可以隐式转换(第4条)为“t2的引用”类型,则e1可以转换为匹配e2,但受转换中引用必须直接绑定到e1(8.5.3)的约束。”
在表达式中,唯一的左值是
因此,我们看到0是类型的右值
“使用此过程,可以确定第二个操作数是否可以转换为与第三个操作数匹配,以及第三个操作数是否可以转换为与第二个操作数匹配。如果两者都可以转换,则OOR ONE可以转换,但转换不明确,程序格式不正确。如果两者都不能转换,则操作数保持不变,并按照下面的说明执行进一步的检查。如果只能进行一次转换,则该转换将应用于所选操作数,而转换后的操作数将在本节其余部分中代替原始操作数。”
因为我们可以转换
我可以继续第5段和第6段,但我认为很明显表达式有类型
我认为结论是:
|
![]() |
3
1
三元表达式的类型在编译时确定;运行时的某些条件无关紧要。 我想问题是:为什么编译器在第一个示例中选择int而不是double? |
![]() |
4
0
三元运算符根据其参数猜测类型。它无法将项转换为int,但可以将项转换为double,然后将其转换为int。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |