if语句中满足的条件的索引

时间:2018-07-13 04:23:28

标签: c++ c

    if(command[i]=='H' or command[i]=='h' or command[i]=='C' or command[i]=='c'){
        do something;
    }

一旦逻辑流程进入该if语句内,我想知道command [i]到底是什么。当然,我可以在内部模块中再次进行个人比较并找出答案,但是有一种更优雅的方法来知道例如满足条件的索引吗?

3 个答案:

答案 0 :(得分:2)

如果您使用

if((myC=command[i]) =='H' ||
   (myC=command[i]) =='h' ||
   (myC=command[i]) =='C' ||
   (myC=command[i]) =='c')

然后,成功表达式的值将以myC结尾,因为“或”链中的求值在第一个真子表达式处停止。

如果进一步走一步,您将获得一个通过索引标识子表达式的数字值。

if(((myC=1), command[i]) =='H' ||
   ((myC=2), command[i]) =='h' ||
   ((myC=3), command[i]) =='C' ||
   ((myC=4), command[i]) =='c')

相同的概念,第一个成功的子表达式是最后一个要评估的子表达式,,运算符确保仅将第二个部分用于比较。

答案 1 :(得分:0)

另一个选择是分配一个值。您可以使用switchif..else塔或带有return语句的函数。这是具有功能的版本:

int classify( char command )
{
    switch( command )
    {
    case 'H': return 1;
    case 'h': return 2;
    case 'C': return 3;
    case 'c': return 4;
    default : return 0;
    }
}

void func(void)
{
    int result = classify( command[i] );
    if ( result )
    {
         // use result value here as appropriate
    }
}

实际上,也可以使用枚举数代替幻数。

答案 2 :(得分:0)

只需执行此操作-

if(command[i]=='H' or command[i]=='h' or command[i]=='C' or command[i]=='c'){
        print command[i]; //use whatever command is appropriate for printing
        do something;
    }