Почему мой код возвращает только одну функцию? - PullRequest
0 голосов
/ 25 января 2019

Я новичок в программировании (начиная с C), и попытался отработать функции, построив калькулятор. Но он всегда возвращает мне ту же функцию, даже если его If-Statement не вызывается. Это мой код:

#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;



}

Я был бы очень признателен за каждый совет, который я могу получить!

Ответы [ 2 ]

0 голосов
/ 25 января 2019

примечание (=) отличается от (==)

= это оператор присваивания, он присваивает значение в вашем коде, вы присваиваете значение M для Math, а логические операторы возвращают либо 0, либо 1. в этом случае возвращается 1 с 1 возвращается управление потоками внутри, если и результат умножения получается как выходной

0 голосов
/ 25 января 2019

Это здесь

if(Math = 'M' || 'm')

Требуется изменить на

if((Math == 'M') || (Math == 'm'))

Потому что 'M' || 'm' просто превращается в 1, который затем присваивается Math, и этот результат возвращается, что означает, что if взято.С этим изменением вы фактически сравниваете Math с 'M', а если оно не равно, с 'm'.

Аналогично для else if(Math = 'A' || 'a') и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...