C 为什么我的代码只返回一个函数?

C 为什么我的代码只返回一个函数?,c,function,C,Function,我是编程新手(从C开始),尝试通过构建计算器来练习函数。但它只会返回相同的函数,即使它的If语句没有被调用。这是我的代码: #include <stdio.h> #include <stdlib.h> int result; int multiplication(int num1, int num2){ result = num1 * num2; return result; }; int addition(int num1, int num2){

我是编程新手(从C开始),尝试通过构建计算器来练习函数。但它只会返回相同的函数,即使它的If语句没有被调用。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int result;
int multiplication(int num1, int num2){

    result = num1 * num2;
    return result;
};

int addition(int num1, int num2){

    result = num1 + num2;
    return result;
};

int substraction(int num1, int num2){

    result = num1 - num2;
    return result;
};

int main(){
    int num1;
    int num2;
    char Math;

    printf("Do you want to do a Multiplication or an Addition, or a Substraction: ");
    scanf("%c", &Math);
    printf("Now give me a Number: ");
    scanf("%d",&num1);
    printf("Now give me another Number: ");
    scanf("%d",&num2);

    if(Math = 'M' || 'm'){
        printf("Your Mulitplication came out to %d", multiplication(num1,num2));
}
    else if(Math = 'A' || 'a'){
        printf("Your Addition came out to %d", addition(num1, num2));
}
    else if(Math = 'S' || 's'){
        printf("Your Substraction came out to %d", substraction(num1, num2));
}
    else{
        printf("Your Input was wrong");
};

return 0;



}
#包括
#包括
int结果;
整数乘法(整数num1,整数num2){
结果=num1*num2;
返回结果;
};
整数加法(整数m1,整数m2){
结果=num1+num2;
返回结果;
};
整数减法(整数num1,整数num2){
结果=num1-num2;
返回结果;
};
int main(){
int num1;
int num2;
字符数学;
printf(“你想做乘法、加法还是减法:”);
scanf(“%c”和“数学”);
printf(“现在给我一个数字:”);
scanf(“%d”&num1);
printf(“现在给我另一个号码:”);
scanf(“%d”&num2);
如果(数学='M'| |'M'){
printf(“您的乘法结果为%d”,乘法(num1,num2));
}
else if(数学='A'| |'A'){
printf(“您添加到%d”,添加(num1,num2));
}
else if(数学='S'| |'S'){
printf(“您的减法结果为%d”,减法(num1,num2));
}
否则{
printf(“您的输入错误”);
};
返回0;
}
我真的很感激能得到的每一点建议

这里是

if(Math = 'M' || 'm')
需要改成

if((Math == 'M') || (Math == 'm'))
因为实际上,
'M'| |'M'
只是变成
1
,然后分配给
Math
,然后返回结果,这意味着如果采用
,则返回
。通过此更改,实际上您正在将
数学
'M'
进行比较,如果不相等,则与
'M'
进行比较

同样适用于
else if(Math='A'| |'A')

if(Math = 'M' || 'm')
需要改成

if((Math == 'M') || (Math == 'm'))
因为实际上,
'M'| |'M'
只是变成
1
,然后分配给
Math
,然后返回结果,这意味着如果采用
,则返回
。通过此更改,实际上您正在将
数学
'M'
进行比较,如果不相等,则与
'M'
进行比较

同样适用于
else if(Math='A'| |'A')
等。

注意(=)与(=)不同

=是赋值运算符它将代码中的值赋值。将值“M”赋值给数学运算符,逻辑运算符返回0或1。 在本例中,它返回1 因为返回了1,所以控制流在if内部 并且乘法的结果作为输出获得

注意(=)与(=)不同

=是赋值运算符它将代码中的值赋值。将值“M”赋值给数学运算符,逻辑运算符返回0或1。 在本例中,它返回1 因为返回了1,所以控制流在if内部
乘法的结果作为输出得到

我发现了一些东西。1) “=”是赋值运算符。您希望在if语句中使用“==”。2) 要比较Var是'X'还是'Y',您需要执行“Var=='X'| | Var=='Y'这些是初学者经常犯的错误,并且经常出现在这里-例如:,您应该始终在编译器中启用警告。对于GCC,您可以使用-Wall-Wextra。这可能会在条件中显示一些警告”赋值“或类似的。请注意所有的警告。我发现了一些事情。1) “=”是赋值运算符。您希望在if语句中使用“==”。2) 要比较Var是'X'还是'Y',您需要执行“Var=='X'| | Var=='Y'这些是初学者经常犯的错误,并且经常出现在这里-例如:,您应该始终在编译器中启用警告。对于GCC,您可以使用-Wall-Wextra。这可能会在条件中显示一些警告”赋值“或类似的。请始终注意所有警告。第二个“M”应该是小的“M”,但你的意思很清楚。@visibleman谢谢你指出这一点。我刚刚注意到我犯了两次这个错误——一次是在代码中,一次是在解释中。第二个“M”应该是小“M”,但你的意思很清楚。@visibleman谢谢你指出这一点。我只是注意到我犯了两次这个错误——一次是在代码中,一次是在解释中。