为什么这不起作用,我对编程很新,但我似乎无法弄清楚为什么这不能正常工作。
#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");
}
答案 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;在你的课程结束时。