【发布时间】:2017-07-05 02:17:03
【问题描述】:
在 4.14 中 http://eel.is/c++draft/conv.bool#1
上面写着:
算术、无范围枚举、指针或指向的指针的prvalue 成员类型可以转换为 bool 类型的 prvalue。
为什么要特别强调prvalue?
算术类型的左值也可以转换为bool。
【问题讨论】:
-
算术类型的左值也可以转换为 bool - 现在了解标准如何定义这种转换。
标签: c++
在 4.14 中 http://eel.is/c++draft/conv.bool#1
上面写着:
算术、无范围枚举、指针或指向的指针的prvalue 成员类型可以转换为 bool 类型的 prvalue。
为什么要特别强调prvalue?
算术类型的左值也可以转换为bool。
【问题讨论】:
标签: c++
标准不希望布尔转换影响左值,因此不允许这样做。
您当然可以将算术类型的左值转换为bool 类型,但这不是通过(仅)布尔转换来完成的。将算术左值转换为bool 是一个标准的转换序列,包括左值到右值的转换,然后是布尔转换。
【讨论】:
int i = 42; int j = i + 1; 时,i 将在+ 看到它之前首先进行左值到右值的转换,因为运算符+ 对右值进行操作。在 C++ 中,左值到右值的转换一直发生。为什么布尔转换应该是一个例外?