#include<bits/stdc++.h>
using namespace std;
long long a,b;
char c;
long long sum;
int main(){
cin>>a>>b>>c;
if(c!='+'&&c!='-'&&c!='*'&&c!='/')cout<<"Invalid operator!";
if(b==0)cout<<"Divided by zero!";
if(c=='+')sum=a+b;
else if(c=='-')sum=a-b;
else if(c=='*')sum=a*b;
else if(c=='/')sum=a/b;
cout<<sum;
}
好神奇,看起来也没有问题啊
共 5 条回复
全部用多分支。在判断了 b == 0, 输出提示信息后,你的程序会接着判断c的符号,并且执行除以0的操作,然后就re了
@root
回复里面艾特我,像这样
@root前面的if改成else if,因为 if 语句不管执行不执行,后面的语句都会依次执行,这里很明显是if(b==0),所以后面的a/b执行了,最终导致 re 错误。