在if语句中赋值

Make assignment within if-statement

本文关键字:赋值 语句 if      更新时间:2023-10-16

我有以下问题

在我的应用中,我有几个if语句

 if ( (number >= 1 && number <= 18) && !strcmp("half1-18", _myBetCh) ) {
 }

现在我意识到我必须拆分这个条件因为在一个条件

之后我需要一个布尔变量
  bool success = false, 
  if(!strcmp("half1-18", _myBetCh) {
      success = true; 
      if (number >= 1 && number <= 18) {
      }
  }

是否有解决这个问题的方法?例如,是否有可能在if语句中进行赋值操作?

这是可能的,像这样:

if ((success = !strcmp("half1-18", _myBatCh)) && number > 1 && number < 18)

,但我个人认为条件下的作业很混乱,很难阅读,我更喜欢这样的变化:

bool success = strcmp("half1-18", _myBetCh) == 0;  
if (success && number >= 1 && number <= 18) {
    // ...
}

有:

if ( !strcmp("half1-18", _myBatCh) && (success = true, number > 1 && number < 18) )

或,避免需要更早的success = false

if ( (success = !strcmp("half1-18", _myBatCh)) && number > 1 && number < 18 )

你的方法更容易阅读,所以我会考虑沿用你的方法。