C语言中的程序逻辑运算符工作不正常

C语言中的程序逻辑运算符工作不正常,c,logic,exit,C,Logic,Exit,在prompt2函数中,我有两个if语句。第一个加法器将调用prompt2。当我按“x”或“x”时,为什么它仍然转到第一个“if”语句,然后打印,答案是..,即使按x,它也应该终止?基本上我想让它在按下“x”或“x”时,程序终止。而且我也不在main中,所以如何从非main的函数终止它呢?如果你需要更多的代码,我可以编辑,只要让我知道 int prompt2(int sum) { char choice; // what the user decides, continuing or n

在prompt2函数中,我有两个if语句。第一个加法器将调用prompt2。当我按“x”或“x”时,为什么它仍然转到第一个“if”语句,然后打印,答案是..,即使按x,它也应该终止?基本上我想让它在按下“x”或“x”时,程序终止。而且我也不在main中,所以如何从非main的函数终止它呢?如果你需要更多的代码,我可以编辑,只要让我知道

int prompt2(int sum) {
    char choice; // what the user decides, continuing or not

    printf("\nBefore you continue, take a look at my number guess written down on paper.");
    printf("\nPress 'D' to display the answer or 'X' to exit: " );
    scanf("%c", &choice );

    if ( choice == 'D' || 'd' ) {
        printf("\nAnswer is %d", sum );
    }
    else if ( choice == 'X' || 'x' ) {
        exit(0);

    }


    return 1;

}

int adder( int x, int y ) {

    int sum = 0;

    sum = x + y;
    printf("new sum is %d\n", sum );
    printf(" %d\n+%d\n----\n?", x, y ); // output appropriate line breaks and spacing for equation

    prompt2(sum); // function that asks them if they want to see the answer
    return sum;

}

在语句中,如果choice='D'| |'D',则D不等于零,因此计算结果为true。它应该是if choice='D'| | choice='D'。

例如,您必须将此行更改为:if choice='D'| |'D'与if choice='D'| | choice='D'。
必须在每个| |或&&语句之后重写变量。

if choice=='D'| |'D'->if choice=='D'| | choice=='D'。其他的如果也一样。啊!太谢谢你了,真不敢相信我没听懂。