c++ - 变量定义到 C++ 中的布尔值转换
问题描述
我发现以下代码在 C++98 及更高版本中有效:
if (int x = 7) { // int x; if (x = 7) makes sense
std::cout << x << '\n'; // 7 is printed
}
问题:控制将变量定义转换为布尔表达式的规则是什么?
如果它像下面这样,那么如果条件是一个赋值表达式,它将计算为一个整数,这将是有意义的 b/c :
int x;
if (x = 7) {
std::cout << x << '\n';
}
解决方案
赋值表达式的结果是赋值目标,在本例中为x
. 既然bool(7)
为真,则条件为真。
此功能的一个常见用法是更有用的,如下所示:
if (auto* x = get_some_pointer())
// use x, which is known to be not null
声明变量的位置与它无关。按照您的示例,这将做同样的事情:
int x;
if (x = 7)
// ...
推荐阅读
- laravel - Laravel 8“不需要”验证规则
- objective-c - Typedef 不能用枚举说明符引用
- angular - 如何将选定的语言存储在 ngx-translate 中?
- asp.net-core - IdentityServer 4 WsFederation - 如何获取调用 API 的访问令牌
- r - 使用基本 R 函数构造函数创建闭包
- node.js - @mysql/xdevapi 不允许 WHERE field IN (?) 查询的数组参数
- spring - Spring JPA Hibernate,如何更新已在 DB 上引用的自动 @ManyToOne 值对象?
- reactjs - 新的 Relic 浏览器代理支持
- android - 如何在 Kotlin 的 EditText 中的 4 个字符后添加空格?
- javascript - 为什么 document.getElementById() 不起作用?