if(command[i]=='H' or command[i]=='h' or command[i]=='C' or command[i]=='c'){
do something;
}
一旦逻辑流程进入该if语句内,我想知道command [i]到底是什么。当然,我可以在内部模块中再次进行个人比较并找出答案,但是有一种更优雅的方法来知道例如满足条件的索引吗?
答案 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)
另一个选择是分配一个值。您可以使用switch
,if..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;
}