逻辑运算符||

时间:2011-02-24 22:54:37

标签: c

  if ( (code == S || M || L || N || P || K ||R || C || U || W || O) )
    {
       return T;
    }

我是否正确使用或运营商?我打算成为其中一个角色,但我不确定我是否正确使用了运算符

5 个答案:

答案 0 :(得分:9)

你需要写:

code == 'S' || code == 'M' || code == 'L', etc.

但你也可以这样做:

if(strchr("SMLNPKJRCUWO", code) != NULL) (or != 0, if you don't have NULL defined)
{}

strchr说“字符串中的字符是什么?如果是这样,给我指向它的位置。如果没有,则返回NULL”(这只是一种说法为零的奇特方式)。

要使用strchr,您可能需要在源文件的顶部放置#include <string.h>

答案 1 :(得分:3)

不,那是无效的。首先,每一个都必须用单引号,其次,你必须明确地与每个字符进行比较,即if(code == 'S' || code == 'M' ...)

如果您正在检查这么多条件,那么是时候获取一个数组并使用循环。

答案 2 :(得分:1)

不,你应该写 -

if ( (code == 'S') ||(code == 'M') ||(code == 'L') /*....*/)

答案 3 :(得分:0)

不,不。 ||是逻辑或操作,C编译器会将其解释为:

if ( (code == 'S' || 'M' != 0 || 'L' != 0 || 'N' != 0 || 'P' != 0 || 'K' != 0 || 'R' != 0 || 'C' != 0 || 'U' != 0 || 'W' != 0 || 'O' != 0) )

无论如何我都希望如此。我相信你想要一些不那么休闲的东西,但在数学上是正确的:

if ( (code == 'S' || code == 'M' || code == 'L' || code == 'N' || code == 'P' || code == 'K' || code == 'R' || code == 'C' || code == 'U' || code == 'W' || code == 'O') )

也许你想考虑switch,它会看起来更好更清晰。

switch(code) {
case 'S':
case 'M':
case 'L':
case 'N':
case 'P':
case 'K':
case 'R':
case 'C':
case 'U':
case 'W':
case 'O':
    return 'T';
}

答案 4 :(得分:0)

没有。首先,我假设code是char类型并且包含单个字符。

如果你想使用if语句,你需要写...

if ( (code == 'S' || code == 'M' || code == 'L' || ...)
{
   return 'T';
}

但是,我建议你使用开关/盒子。

switch(code){
case 'S':
case 'M':
case 'L':
case 'N':
case 'P':
case 'K':
case 'R':
case 'C':
case 'U':
case 'W':
case 'O':
    return 'T';
    break;
case 'V':
    /* Do something else if code == 'V' */
    break;
default:
    /* It's any other value... */
}

通常在使用开关/案例时,您会被告知在每个选项后使用break,因为选项将“掉头”。但如果您有多种选择,也可以使用此功能。

相关问题