c语言while问题 while里面的条件怎么也判断不了是 输入缓冲区里面的脏数据的原因?求正解

作者&投稿:党旺 (若有异议请与网页底部的电邮联系)
你的while判断用!=和||组合当然停不下来,如果op == ‘-',那么op != '+'是肯定成立的,反过来也一样,所以op !='-'和op!='+'至少有一个是真的,所以或起来肯定是真的

首先建议吧 scanf("%*[^\n]");
scanf("%c",&op);这种写法是不是为了避免op读入空格回车之类的字符,没必要这么麻烦 scanf(" %c",&op);%前面加个空格 就可以自动过滤掉
所以 建议简化代码为
int main(int argc, char* argv[])
{

char op;
scanf(" %c",&op);
printf("op:%c\n",op);
while(op!='-'||op!='+'||op!='*'||op!='/')
{
printf("error\n");
scanf(" %c",&op);
printf("op:%c\n",op);

}
printf("over");
return 0;
}

然后就是你的逻辑问题 全部应该用 && 连接 自己想想这个逻辑 呵呵
不清楚再追问

c语言while循环的问题~

while循环是对while括号后面的表达式进行真假的判断,,比如你用的a,C语言中有这样的规定,如果a=0;那么a 表达的就是假,如果a不为0,那么他表示的是真,因此,上面的循环,只要a不等于0,那么循环就一直进行
刚开始学的时候,我一直以为,只有在等于1的时候才是真,等于2他就不能循环了,其实那是错的,编译器判断真假条件的标准是他等不等于0,而不是等不等于1,楼主记住了哦~
还有就是,如果楼主的意愿是让a=0的时候退出循环,那么就可以按照你写的方法进行,如果楼主的意愿是让a=0的时候才循环,那么有2种写法
while(!a)
{
//对a进行非操作
}
还有就是
while(0==a)
{}
建议写成0== a 的形式,其实0==a,和a==0实质是一样的,但是如果你讲0==a,写成了0=a,那么编译器会报错,而将 a==0写成a=0编译器是不会报错的,可以减少风险。
祝你进步!!

C语言循环结构之while循环语句