C语言中可以给变量赋值字符吗

来源:百度知道 编辑:UC知道 时间:2024/06/08 01:32:54
main()
{
char max;
scanf("%c",&max);
if ((max=='a')||(max=='b')||(max=='c')||(max=='d'))
{
printf("11111");
}
else
{
printf("you are wrong");
}
getch();
}
这是个很简单的程序,但是,里边的有个if ((max=='a')||(max=='b')||(max=='c')||(max=='d'))都是用的==,而没有用=,一旦用=就出错,但是我认为这个地方可以用赋值来解释,所以应该可以用=,但是为什么不能用呢?

楼主进入误区了。
这时需要的是判断。当然你赋值的话,从语法上是没有错的
但是你赋值的话,比如ma='a'。那么这个式子就成了真值。那么后面的就没必需再判断了。整个式子就成了永真假
所以不管你输入什么,他都只会打印11111

=是赋值运算,整个表达式的返回值是其右端的值,例如
max='a'
的值其实是97,a的ASCII码
没有起到比较的目的

好像没有getch() 这个函数吧
是getchar()

没有问题 应该可以通过编译 应该是编译器的问题