奇怪的c++行为.价值被覆盖

Strange C++ behavior. Value gets overriden

本文关键字:覆盖 行为 c++      更新时间:2023-10-16
#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);
 }

}

在上面的代码中,我不明白为什么在我输入x之后t的值被设置为0。你甚至可以打印并检查t是否被设置为0。我甚至在ideone上查过了。http://ideone.com/JeCbSv任何帮助吗?

您的scanfop中读取无效。op是单个char,因此您应该使用

阅读。
scanf("%c",&op);

scanf("%s",&op);