错误C2143:语法错误:在'常量之前'缺少')'

时间:2010-05-25 18:48:04

标签: visual-c++

我的项目一直出现这个错误,我无法弄明白!请帮忙!

错误C2143:语法错误:'常量'之前缺少')'

该行是:

while (selection == ('a','b','c', 'd', 'e', 'f', 'g', 'h', 'i','A','B' 'C', 'D', 'E', 'F', 'G', 'H', 'I');

我也知道有一种更容易的方式来写出那条线,但我不知道我怎么做。我是初学者,所以你们中的任何人都可以为我编辑这行!

2 个答案:

答案 0 :(得分:6)

你有多少个开括号?

你有多少个封闭的括号?

这些号码是一样的吗?如果没有,哪里缺少一个?

此外,语法a == (b,c,d)并非a == b || a == c || a == d的简写,就像您似乎想的那样。由于comma operator的工作方式,它实际上相当于a == d

要完全明确,你真正想要的是:

while (selection == 'a' || selection == 'b' ||
       selection == 'c' || selection == 'd' ||
       selection == 'e' || selection == 'f' ||
       selection == 'g' || selection == 'h' ||
       selection == 'i' || selection == 'A' ||
       selection == 'B' || selection == 'C' ||
       selection == 'D' || selection == 'E' ||
       selection == 'F' || selection == 'G' ||
       selection == 'H' || selection == 'I')
{
   /* Do stuff */
}

或者,为了更加明智,你可以利用字母在ASCII表中按字母顺序排列的事实,并写下

while (tolower(selection) >= 'a' && tolower(selection) <= 'i')
{
   /* Do stuff */
}

这需要在<ctype.h>函数中包含tolower

答案 1 :(得分:1)

鉴于您对Tyler的帖子的评论,看起来您真正想要的是:

while ((selection >= 'a' && selection <= 'i') || (selection >= 'A' && selection <= 'I'))
{
    // loop
}

可以将字符比较为数字(因为它们在CPU中是数字),这意味着您可以使用< > <= >=运算符检查一系列字符。 / p>