我知道你可以像这样分配一个变量:
double y = 140;
int i = (y > 100) ? y / 2 : y * 2; //shorthand if else
std::cout << i << std::endl; // 70
或者使用,
分隔的多个命令:
double y = 140;
int i = (y > 100) ? (y /= 2, 5) : (y *= 2, 10);
std::cout << i << std::endl; // 5
std::cout << y << std::endl; // 70
但是我可以使用正常的if else语句吗?
我试过了:
int i = if(y > 100){
y / 2;
} else {
y * 2;
}
或者使用{ if..}
括号中的整个if语句,但这不起作用。
是否可以使用普通的if else语句来执行此操作,其中赋值给变量的最后一个表达式(没有方法,函数或lambda)?
答案 0 :(得分:5)
不,这不可能在你的限制范围内。为了记录,lambda解决方案如下所示:
int i = [&]{
if(y > 100) {
return y / 2;
} else {
return y * 2;
}
}();
答案 1 :(得分:0)
不,不可能。 if
不返回任何内容,它是一个流控制语句。如果你想这样做,你必须这样做&#34;手动&#34;:
int i;
if(y > 100){
y /= 2;
i = 5;
} else {
y *= 2;
i = 10;
}
答案 2 :(得分:0)
你可以这样做: -
#include<iostream>
using namespace std;
int main()
{
double y = 140;
int i;
if(y > 100){
y =y/2;
i = 5;
} else {
y =y*2;
i = 10;
}
cout<<i<<endl;
cout<<y<<endl;
return 0;
}
以下代码片段无法正常工作,因为if
不会返回任何内容,它只是一个声明。
int i = if(y > 100){
y / 2;
} else {
y * 2;
}