奇怪的 C++ 行为。值被覆盖
Strange C++ behavior. Value gets overriden
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
long long int val;
char op;
scanf("%lld",&val);
while(true){
long long int x;
scanf("%s",&op);
if(op=='=')break;
scanf("%lld",&x);
cout<<"***"<<t<<endl;
if(op=='+')val+=x;
else if(op=='-')val-=x;
else if(op=='*')val*=x;
else val/=x;
}
printf("%lld",val);
}
}
在上面的代码中,我无法理解为什么 t 的值在我输入后被设置为 0在 x。您甚至可以打印并检查 t 是否已设置为零。我什至在ideone上检查过它。 http://ideone.com/JeCbSv
有帮助吗?
您在 op
中阅读的 scanf
无效。 op
是一个单一的 char
,所以你应该阅读
scanf("%c",&op);
没有
scanf("%s",&op);
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
long long int val;
char op;
scanf("%lld",&val);
while(true){
long long int x;
scanf("%s",&op);
if(op=='=')break;
scanf("%lld",&x);
cout<<"***"<<t<<endl;
if(op=='+')val+=x;
else if(op=='-')val-=x;
else if(op=='*')val*=x;
else val/=x;
}
printf("%lld",val);
}
}
在上面的代码中,我无法理解为什么 t 的值在我输入后被设置为 0在 x。您甚至可以打印并检查 t 是否已设置为零。我什至在ideone上检查过它。 http://ideone.com/JeCbSv 有帮助吗?
您在 op
中阅读的 scanf
无效。 op
是一个单一的 char
,所以你应该阅读
scanf("%c",&op);
没有
scanf("%s",&op);