如果功能,C代码无法正常工作

时间:2014-01-18 01:44:29

标签: c

我的字符串是XAbc,第一个字符是我的IF函数中的X.如果first = X symbol = 0,但我是printf符号,它给了我symbol = 2.

#include <stdio.h>
#include <string.h>
int main(void)
{
    checkformula("XAbc");

}
void checkformula(char* formula)
{
    char first = formula[0];
    int symbol;

printf("first character is %c\n",first);
    if (first = 'E')
    {
          symbol = 2;
    } else if (first = "~")
    {
         symbol = 1;
    } else if (first = 'X'){
        symbol = 0;
    } else if (first = 'A')
    {
          symbol = 3;
    } else if  (first = '(')
    {
        symbol = 4;

    } else {
        symbol = -1;
        }


printf("symbol is %i\n", symbol);

输出:

第一个字符是X. 符号是2

3 个答案:

答案 0 :(得分:3)

if语句中,您需要测试与==运算符的相等性。实际上,您正在使用赋值运算符=,它在左侧修改变量的值,并为if提供“true”值,只要该字符在右侧不是ASCII NUL('\0')字符 - “零”值是false,非零值是true在C中。

答案 1 :(得分:1)

  • 您的代码调用未定义的行为,因为它没有函数checkformula的原型。在main之前放置函数的原型。

应该是这样的:

void checkformula(char *);  
  • 您在=语句中使用了赋值运算符if而不是==运算符。

应该是

if (first == 'E') {...}

答案 2 :(得分:0)

如果陈述错误。你不是故意要使用&#34; ==&#34;不是&#34; =&#34;运营商?你正在进行任务而不是比较。

if (first == 'E')
    {
          symbol = 2;
    } else if (first == "~")
    {
  //etc