-1

我正在尝试使用 IF 条件创建类似的东西:

if(mychar[i] = "+")
{
   /* do something */
}

我想检查如果 char[number i-1] 是加号,但我不能在我的条件下正确定义加号:/

如果有人可以帮助我,我将不胜感激。

4

3 回答 3

7

两个修复:

if(mychar[i] == '+')
                ^ use '' for char, and "" for strings
             ^ = is an assignment operator, == is a comparison operator

值得注意的是,虽然不推荐,但仅将赋值运算符用作布尔表达式是有效的,因为 0 被认为是 FALSE,而任何其他值都被认为是 TRUE。

于 2012-05-03T21:15:25.250 回答
1

为了防止这种使用一个等号的事故,只需这样做

if ('+' == mychar[i]) 

一旦你养成了放置常量 (char, int, double, ...) 的习惯,编译就会吐出你的错误。

于 2012-05-03T21:19:18.273 回答
0

鉴于您原来的 if 语句f(mychar[i]="+") { do sth }

首先,使用单个=会导致赋值。在这种情况下,将“+”赋值给mychar[i].

C 将允许您在 if 语句中分配一个值,但我从不知道有人在实践中这样做过。您正在尝试比较值,因此您想使用==而不是=.

其次,您使用的是常量字符串"+"而不是 char '+',因此编译器抱怨将指向字符串的指针分配给字符。

最后,在将值与常量进行比较时,我使用了一个构造。我把常数放在前面==

if('+' == mychar[1])

如果我快速键入并键入,if('+' = mychar[1])我会在尝试将值分配给常量时收到编译时错误。

于 2012-05-03T21:28:49.650 回答