C错误说表达式不可分配?

时间:2015-10-29 13:54:16

标签: c compiler-errors

所以我正在编写一个程序,它接受三种颜色的电阻带的串输入并计算它的电阻。

我已经接受了输入,这个函数使用strcmp(或strcasecmp)来比较字符串和颜色列表。但是,我收到一个编译错误,说"语句不可分配",直接引用if / elseif语句。

我有一个数组中的列表,但出于此目的,我只使用了一个字符串。这是我收到错误的函数。我是否可能需要添加for或while循环?

char calculate_first_resistance(char color1[8])
{
    g = strlen(color1)-1;
    if( color1[ g ] == '\n')
        color1[g] = '\0';


    if (strcmp(color1, "black")=NULL)
    {
        band1=0;
    }
    else if (strcmp(color1, "brown")=NULL)
    {
        band1=10;
    }
    else if (strcmp(color1, "red")=NULL)
    {
        band1=20;
    }
    else if (strcmp(color1, "orange")=NULL)
    {
        band1=30;
    }
    else if (strcmp(color1, "yellow")=NULL)
    {
        band1=40;
    }
    else
    {

    }

    printf("%d", band1);
    return EXIT_SUCCESS;
}

3 个答案:

答案 0 :(得分:7)

if (strcmp(color1, "black")=NULL)

应该是

if (strcmp(color1, "black")==0)

编辑:比较0而不是空。参见Arc676的帖子

答案 1 :(得分:3)

您在border-box条件中进行了分配而不是比较:

if

使用(strcmp(color1, "brown")=NULL) 进行比较

==

使用0,因为如果字符串相等,那就是(strcmp(color1, "brown") == 0) 返回的内容(参见this link

答案 2 :(得分:1)

其他用户已经注意到您的错误是在if中分配而不是比较。

在这种情况下,你很幸运,编译器给你错误,但有些情况下编译器可能不会警告你。

例如,如果你写

if ( band1 = 0)

你会将值0赋给变量band1,而不是比较它们。

这就是为什么许多人喜欢这样写:

if ( 0 == band1 )

在这种情况下,如果你忘记了第二个=,它会给你一个错误,因为声明

if ( 0 = band1 ) 无效