使用if中的c 双重否定

Double negation in c++ using if

本文关键字:if 中的 使用      更新时间:2023-10-16

问题:

我正在从大学的引言问题集中练习,该问题是创建一个程序,其中用户介绍了四个变量abc,CC_3,d和:如果a(c; d)中,并且b不在(c; d)中,则程序应打印aba+b;否则应该打印aba-b

我注意到,如果用户引入ab,以使两个语句都是错误的,则它打印a+b而不是a-b。为什么会发生?

尝试:

#include<iostream>
using namespace std;
int main()
    {int a,b,c,d;
    cout<<"Introduza a: ";
    cin>>a;
    cout<<"Introduzca  b: ";
    cin>>b;
    cout<<"Introduzca c: ";
    cin>>c;
    cout<<"Introduzca d: ";
    cin>>d;
    if( (c<a<d) && ((b<c || d<b)))
        {cout<<"a= " <<a <<"n";
        cout<<"b= " <<b << "n";
        cout<<"a+b= " <<a+b <<"n";
        }
    else
        {cout<<"a=" <<a <<"n";
        cout<<"b= " <<b <<"n";
        cout<<"a-b= " <<a-b <<"n";}
        }       

在诸如C ,C,Java,php等编程语言中。类似(c<a<d)之类的东西分布在(c < a && a < d)上。第二件事是您在此处不需要双重括号。整个行:

if( (c<a<d) && ((b<c || d<b)))

应该看起来像:

if (c < a && a < d && (b < c || d < b))

希望这会有所帮助!!!!

澄清每个评论:我在数学中的意思是您用编程语言编写a < b < c,您将其写为a < b && b < c。在编程中,a < b < c(a < b) < c相同,这在依次表示a小于b,它将返回1,从而产生1 < c。如果a更大或等于b a < b将返回0,从而产生0 < c