&&无法应用于bool和int类型的操作数,何解?

来源:百度知道 编辑:UC知道 时间:2024/06/01 11:15:21
本人用C#做以下程序代码
private void 邻域清除ToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c = new Color();
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);

int cc,r1,r2,r3,r4;
for (int i = 1; i < pictureBox1.Image.Width - 2; i += 1)
{
for (int j = 1; j < pictureBox1.Image.Height - 2; j += 1)
{
c = box1.GetPixel(i, j);
cc= c.R;
c = box1.GetPixel(i + 1, j);
r1 = c.R;
c = box1.GetPixel(i - 1, j);
r2 = c.R;
c = box1.GetPixel(i - 1, j + 1);
r3 = c.R;
c = box1.GetPixel(i - 1, j - 1);
r4 = c.R;
if((r2==255)&&(r3

if((r2==255)&&(r3==255)&&(r4==255)&&(r1=255))
你看看最后一个关系运算应该是r1==255而你写成了r1=255当然要报错了!
(一个是BOOL一个是INT类型)
呵呵程序编写时间长了,难免的错误。检查一下就好了,祝你好运!

表示&&左右值一个是bool型,一个是int型。
&&为逻辑与操作,形式为
expr1 && expr2
要求两个操作数必须都是bool型。
当一个是bool而另外一个是int型时就会报错。
对于此类错误,检查出错行&&两端的操作数类型即可。对于int型的,将其转换为bool型。

&&(r1=255)漏了一个等号 这样变成了赋值了 当然是int类型

仔细看对比:
你写的:if((r2==255)&&(r3==255)&&(r4==255)&&(r1=255))
我改的:if((r2==255)&&(r3==255)&&(r4==255)&&(r1==255))

if((r2==255)&&(r3==255)&&(r4==255)&&(r1==255))
&&(r1=255))最后一个改成&&(r1==255))