2011-02-24 193 views
0
if ((code == S || M || L || N || P || K ||R || C || U || W || O)) 
    { 
     return T; 
    } 

我正确使用or运算符吗?我正打算为是那些性格中的任何一个,但我不知道如果我正确使用操作逻辑运算符||

+0

哦好吧谢谢你 – 2011-02-24 22:59:13

回答

3

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

如果你正在检查这许多条件,现在是时候获得一个数组并使用一个循环。

1

不,你应该写 -

if ((code == 'S') ||(code == 'M') ||(code == 'L') /*....*/) 
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>

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

,我会希望是这样呢。我相信你想要的东西少漫不经心languuage一样,但在数学上正确的:

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'; 
} 
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,因为这些选项将“落空”。但是,如果您有多个选项,您也可以将其用于您的优势。