-5

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

#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");
}
4

6 回答 6

9

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

例如:

int x = 0;

if (x = 5)
{

}

如果可以完成赋值并且值 != 0,这将评估为真(它返回 5 到“如果”并且所有非零项按约定为真)。在这种情况下,它可以完成并返回 5 .

您可能正在寻找这个:

int x = 0;

if (x == 5)
{

}

这将评估为假 (0)。

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

于 2013-06-02T22:33:38.127 回答
6

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

于 2013-06-02T22:31:16.967 回答
2

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

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

于 2013-06-02T22:36:14.370 回答
0

并且因为您从 int main() 开始只是出于编译器原因 put return 0; 在你的程序结束时更正确。

于 2013-06-03T00:27:58.553 回答
0

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

要清除您对运营商的疑虑,请阅读此链接 http://www.tutorialspoint.com/cprogramming/c_operators.htm

于 2013-06-02T23:07:00.370 回答
0

它不起作用,因为您需要将=符号更改为==. 有时在声明 int 或 char 时使用等号。==意思是等于,当你不声明整数和字符时你想使用它。虽然!=意味着不等于。你还应该把一个 return 0; 在你的程序结束时。

于 2014-02-15T01:02:23.497 回答