减法操作不起作用

时间:2013-12-12 17:20:56

标签: c windows

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

int main(){
    char letter;
    float n1, n2, sum;
    printf("What operation do you want to use \n\nA)Addidtion\nB)Subtraction\nC)Multiplacation\nD)Division\n");
    scanf("%c", &letter);
    printf("Please enter a number: ");
    scanf("%f", &n1);
    printf("Please enter a second number: ");
    scanf("%f", &n2);
if(letter == 'A' ||'a'){
        sum = n1 + n2;
    printf("The sum of %.2f plus %.2f is %.2f", n1, n2, sum);
}else if(letter == 'b' || 'B'){
    sum = n1 - n2;
    printf("The sum of %.2f minus %.2f is %.2f", n1, n2, sum);
}
return 0;
}

减法不起作用你能帮我解决这个问题吗?我不能,当我运行程序时我输入b然后输入12然后输入2并且它给了我14?它应该是10

3 个答案:

答案 0 :(得分:8)

if(letter == 'A' ||'a')

没有做你想做的事。

if(letter == 'A' || letter == 'a')

是你想要的。

||操作将其操作数评估为真值,如果其中一个评估为1,则评估为true。无论letter == 'A'是否属实,至少'a' - != 0 - “都会带来真相”。

答案 1 :(得分:5)

if(letter == 'A' ||'a')

相当于

if(letter == 'A' || 97) // 'a' == 97

在if语句中,数字!= 0被评估为真。

因此,您的情况相当于

if(true) {
  sum = n1 + n2;
  printf("The sum of %.2f plus %.2f is %.2f", n1, n2, sum);
} else {
  //Not reachable statement. The compiler should warn you.
}

答案 2 :(得分:0)

除了错误的if声明之外,我希望您的程序输出无论如何以某种方式“纠正”它在所有情况下打印的短语。当被要求减法时,它可能会计算总和,但重复的印刷短语应该是正式的。