在C中创建好的IF语句时遇到问题

在C中创建好的IF语句时遇到问题,c,if-statement,char,C,If Statement,Char,我正在尝试用IF条件创建类似的内容: if(mychar[i] = "+") { /* do something */ } 我想检查char[number I-1]是否为加号,但我无法在我的条件下正确定义加号:/ 如果有人能帮助我,我将不胜感激。两个解决方案: if(mychar[i] == '+') ^ use '' for char, and "" for strings ^ = is an assignment operat

我正在尝试用IF条件创建类似的内容:

if(mychar[i] = "+")
{
   /* do something */
}
我想检查char[number I-1]是否为加号,但我无法在我的条件下正确定义加号:/

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

两个解决方案:

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

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

为了避免使用一个等号的错误,只需使用这种方法即可

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

一旦你养成了这个习惯,把常量char,int,double。。。编译将吐出您的错误。

给定您的原始if语句fmychar[i]=+{do sth}:

首先,使用单个=会导致赋值。在本例中,将+赋值给mychar[i]

C将允许您在if语句中赋值,但我不知道有谁在实践中这样做过。您正在尝试比较值,因此希望使用==而不是=

其次,您使用的是常量string+,而不是char“+”,因此编译器抱怨将指向字符串的指针指定给字符

最后,我在比较一个值和一个常量时使用了一个构造。我把常数放在==

如果“+”==mychar[1]


如果我快速键入并键入If'+'=mychar[1],我将在尝试为常量赋值时遇到编译时错误

修复if..中缺少的'ifmychar[i]='+-'i'我知道你会发现它并修复它,但这是一个不容错过的好机会:无意冒犯,但如果这种事情让你感到不安,我建议你在继续之前先读一本关于C的好书。学习比较数值的正确方法比使用绷带更好。不!Yoda条件适用于那些不能警告您编写更符合逻辑的代码的蹩脚编译器。没有人说如果plus是mychar[i],你养成了这个习惯,那么你就没有问题了。这是关于习惯于某种思维。哦,它可以正常工作。当任何现代编译器能够警告这种构造时,为什么要训练自己编写不合逻辑的代码呢。最好是训练自己阅读和理解编译器错误和警告,而不是向后编写代码。@dreamlax-如果mychar[i]=“x”在逻辑上正确,则该语句是正确的。但可能不是你想要的。这就像说“我的钱包里有5便士,让我们检查一下,哦,是的,是的”或者“我的钱包里有什么硬币,有5便士吗,是的,有”这两个合理和合乎逻辑的陈述。