c++请高手查错。

来源:百度知道 编辑:UC知道 时间:2024/09/22 10:33:47
#include <iostream>
using namespace std;
void main()
{
char a , b , c , d;

cout<<"qingshuru";

cin>>a>>b>>c;

cout<<"d="<<d=a*b*c<<"\n";

}
都不对。第二个,程序可以运行,但是输出结果错误。

也许是我没有说清楚。
你该清楚你所定义的d是什么类型,char型,范围为-128~127,你觉得有没有溢出的可能性?
如果你想看到你想象中的结果,将d定义为int型或者更大的类型。

===============
问题出在这一句:
cout<<"d="<<d=a*b*c<<"\n";

=的优先级低于<<,在这里,[[[ d=a*b*c<<"\n" ]] 会被当作一个赋值语句,<<在这时是左移运算符,所以会出错,用()改变优先级就没事了.
修改为:
cout<<"d="<<(d=a*b*c)<<"\n";

char a , b , c , d;

char类型的不能相乘

cout<<"d="<<d=a*b*c<<"\n";

写成这样
d=a*b*c
cout<<"d="<<d<<"\n";