我有以下功能
int namecomp(char c);
部分功能代码
else if (c == 'b' || 'B')
i=2;
我在main()
j= namecomp(s);
和s
定义为char s = 'B';
出现错误,每当我尝试使用j
时,主要值始终为1
。请帮我知道错误的确切位置。谢谢!
编辑:抱歉,没有人工作过。我发布了完整的帮助代码
int main (int argc, char* argv [])
{
int i;
int j;
char s = 'B';
j= namecomp(s);
printf ("%d",j);
}
int namecomp(char c)
{
int i;
if (c == 'a'||'A')
i=1;
else if ((c == 'b' || c == 'B'))
i=2;
return i;
}
答案 0 :(得分:11)
c == 'b' || 'B'
始终评估为1
,因为它被解析为
(c == 'b') || 'B'
我打赌你想要
(c == 'b') || (c == 'B')
答案 1 :(得分:1)
这个
(c == 'b' || 'B')
应该是:
(c == 'b' || c == 'B')
否则,你正在测试这个:
((c == 'b') || 'B')
与
相同((c == 'b') || true)
因为'B'
不为零。
请记住,逻辑和/或符号不能在内部逻辑测试中使用,只能将逻辑测试结合在一起。
答案 2 :(得分:1)
你写了
(c == 'b' || 'B') // this can be ( (c=='b') || 'B') in your compiler
你的意思是
(c == ('b' || 'B'))
或
( (c == 'b') || (c=='B') )
你应该使用后者。
你应该作为一个偏执的偏执狂接近这些条件,以确保它满足你的条件。如果它适用于所有条件,那么你可以在没有paranthesis的情况下尝试。
答案 3 :(得分:0)
c == 'b' || 'B'
始终求值为1,因为'B'
是非零值,因此第二个操作数始终为true。
你需要测试你的状况。
if (c == 'b' || c == 'B')