- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我运行时
#include <stdio.h>
#include <typeinfo.h>
#include <type_traits>
struct S { operator unsigned long long() const { return 3ULL << 30; } };
int main()
{
printf("%s, 0x%llX, %d\n",
typeid(true ? S() : 0).name(),
(unsigned long long)(1 ? S() : 0),
std::is_same<
std::common_type<int, unsigned long long>::type,
unsigned long long
>::value);
}
我希望返回 unsigned long long, 0xC0000000, 1
。
但是,我返回 int, 0xFFFFFFFFFC0000000, 1
。为什么?
在我看来,0
应该转换为 unsigned long long
,因为 conversion ranks如下:
rank(int) < rank(long) < rank(long long) = rank(unsigned long long)
但我看到了将 unsigned long long
直接转换为 int
,我正在努力证明这一点...
最佳答案
编译器看到的是 S
和 int
,而不是 unsigned long long
和 int
。
当涉及到类类型时,它不会遍历所有可能的对 转换来选择最佳转换,因为它通常不能这样做,因为转换运算符可能被模板化,并且规则不应根据是否是这种情况而改变。
它所能做的就是判断一种类型是否可以转换为另一种类型,在这种情况下,这意味着它检测到 S
可以转换为 int
,因此它执行该转换而根本没有出现整数提升排名。
关于c++ - 为什么三元运算符转 (... ? int : unsigned long long) into int when an implicit conversion is involved?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57193440/
(我之前问过这个问题,但没有给出一个可行的例子,所以我删除了之前的一个。我希望在这个问题上我得到了正确的例子。) 案例: #include struct S { S() = default;
我的软件在几个数据库上运行,所以我需要通用(值得注意的是,我认为“不同”的解决方案可能有效,但这不是标准的)。 假设我有两个表定义为: Table A: id, time (pk: id) Table
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
请帮忙。我正在准备 Java 7 Programmer 1 考试,并在其中一个 enthuware 测试中遇到了这个问题。 问题: 考虑以下方法: static int mx(int s) { for
我有两张 table table 1 : id, name, age, gender. table 2(friend) : id1,id2. (stored only once i.e only on
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
这是 C++ Primer 4th Edition 的问题。我正在使用这个版本,因为它是我唯一可以访问的版本。 Question: The Web site (http://www.awprofess
描述: 我正在使用 mysql/php 构建评级系统。我对如何设置数据库感到困惑。 这是我的文章设置: 文章表: id | user_id | title | body | date_posted 这
我正在尝试将负角度(以度为单位)转换为正角度。但是我收到一个编译错误: test.cpp invalid operands of types 'double' and 'int' to binary
例如,我想将某个文本字段放置在导航栏下方,距离等于父 View 总高度的四分之一。这涉及三个项目:文本字段、顶部布局指南和父 View 。如何在 Interface Builder 中或通过编程创建这
我在屏幕上有 2 个文本框,一个是“从金额”,另一个是“到金额”。验证规则是 “从金额”应小于“到金额”。 现在我的问题是,当用户输入一对“从金额”大于“到金额”的金额时, 如何使两个文本框都显示为红
我正在尝试生成一个具有规范的字符串(每列的列名和最大字符串长度): library(tidyverse) df % summarise(across(everything(), ~ str_c("
我一直在创建一个图来运行 A* 的实现,但在查找节点的邻居时,我似乎遇到了某个错误。我的逻辑是,在表示邻接矩阵的 2D ArrayList 中,列表 1 中包含节点 a b c d,列表 2 中包含节
目前我正在一个可重用的 Django 应用程序上进行 TDD。一项测试应确保我的 View 仅返回发布日期为过去的文章。我对在 Django 中进行测试还很陌生。到目前为止,我已经学会了如何使用 .j
我有 Hibernate 生成的类,其中包含其他类 - public class BookLoans implements java.io.Serializable { private Boo
我正在认真研究将正在执行的程序的状态存储到磁盘并再次将其取回的基本原理。在我们当前的设计中,每个对象(这是一个带有函数指针列表的 C 级东西,一种低级的自制面向对象——这样做有很好的理由)将是调用以将
我有一个我想调用的模板化函数。这是标题的(精简版): template void print (shared_ptr> stuff, ostream& out) 我试着用这样的一行来调用它: pri
我有一个抽象类Image,它有两个实现:CTImage和CRImage。具体类型的Image是Series(也是抽象的)的一部分,有两个实现:CTSeries和CRSeries。在创建特定图像的对象时
(免责声明:我不知道 C++ 标准对此会说什么……我知道,我很糟糕) 在处理非常大的字符串时,我注意到 std::string 正在使用写时复制。我设法编写了最小的循环来重现观察到的行为,例如,下面的
上下文:我正在创建一个新项,将其缓存并返回,但其名称必须是唯一的。我们谈论的是多线程环境。我的问题在评论中。。如何解决这个问题?。我的想法是:是否应该将整个createItem()包装在一个同步(Th
我是一名优秀的程序员,十分优秀!