(极端Noob在这里)为什么这个C代码不起作用?

时间:2013-06-02 22:30:04

标签: c

为什么这不起作用,我对编程很新,但我似乎无法弄清楚为什么这不能正常工作。

#include <stdio.h>
#include <math.h>

int main(){
    int num1;
    printf("Enter 1, 2, 3.");
    scanf("%d", &num1);
    if(num1 = 1)
        printf("You entered one");
    else if(num1 = 2)
        printf("You entered two");
    else if(num1 = 3)
        printf("You entered three");
    else
        printf("Invalid");
}

6 个答案:

答案 0 :(得分:9)

在C中,在条件(if语句)中使用赋值(int x = 5)是有效的。

例如:

int x = 0;

if (x = 5)
{

}

这将评估为true(如果可以完成赋值,它将返回5到“if”和all non zero terms are true by convention)并且值!= 0.在这种情况下,它可以完成并返回5

你可能正在寻找这个:

int x = 0;

if (x == 5)
{

}

这将评估为false(0)。

请记住:您使用单个等号“=”表示“赋值”。使用双等号“==”表示“比较”。

答案 1 :(得分:6)

将所有=替换为==并且您应该没问题(因为=用于分配,而==用于测试相等性,这似乎是您想要做的)

答案 2 :(得分:2)

在C中,与其他许多编程语言一样, = 运算符表示“赋值”。当你执行a = 3时,这意味着“分配一个3”,这当然是成功并返回true的原因,这就是你的程序将始终进入第一个分支的原因。

您需要做的是使用“等式测试”运算符 == ,以便当且仅当变量a持有的值为3时,== 3才返回true。

答案 3 :(得分:0)

您的代码有一个错误,而不是==,在C =运算符中表示赋值运算符,而==运算符用于比较。

要清楚您对操作员的疑虑,请阅读此链接      http://www.tutorialspoint.com/cprogramming/c_operators.htm

答案 4 :(得分:0)

因为你刚开始使用int main()只是出于编译器的原因所以返回0;在你的程序结束时更正确。

答案 5 :(得分:0)

它不起作用,因为您需要将=符号更改为==。有时在声明int或char时使用等号。 ==意思相同,当你没有宣告整数和字符时你想要使用它。而!=意味着不相等。你也应该返回0;在你的课程结束时。