c++ - C ++分配并签入一行?
问题描述
我有一个返回随机数的函数 my_fun。
如何在一行中进行申报和价值检查?
int x;
if (x= my_fun()<0)
if ((x= my_fun())<0)
if ((x= my_fun()<0)) // this is what my IDE suggests but looks strange since those extra braces don't help at all.
解决方案
我同意@Bas 和@Jeffrey 的评论,更喜欢分两行来做。但是,在 C++17 中,您可以这样做
if (int x = my_func(); x < 0) {
// Do stuff
}
要解释您的选项之间的区别:
选项 1) 和 3) :
x
将具有表达式的值,my_fun() < 0
而不是返回的值my_fun()
。它们基本相同,多余的括号没有说明。你也可以写(((( x = my_fun() < 0 ))))
选项 2) :将分配返回的值
my_fun()
tox
然后 evaluatex < 0
,这可能是您想要的。
推荐阅读
- oracle - 雪花从日期数组中选择最大日期
- weblogic - weblogic中如何创建域目录?
- java - 在模拟 Keycloak 期间在目标客户端的资源上获取 403
- azure - 问:Azure 服务主体、api 到 api?
- java - 如何使用外部for循环中的值java
- android - 无法上传签名的 apk/appBundle 来播放开发帐户“完整性检查失败”
- e-commerce - 电子商务托盘堆栈配置器
- javascript - app.config.globalProperties - 无法读取未定义的属性“globalProperties”
- sas - SAS:如何根据变量名称对 y 的每个观察值求和观察结果以创建新变量?
- google-cloud-vertex-ai - CIDR 地址与现有子网 CIDR 重叠:192.168.230.0/24