将if else语句的最后一个值赋给变量

时间:2018-04-12 08:25:22

标签: c++

我知道你可以像这样分配一个变量:

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)?

3 个答案:

答案 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;
            }