Viual C++条件语句中的实参左写

来源:岁月联盟 编辑:exp 时间:2012-10-30

学过编程的都知道,程序设计中只有三大控制结构,即顺序、循环和条件。任何的程序设计都离不开这三种结构,本次我只介绍一个关于条件语句中的小技巧——实参左写。下面以Visual C++ 6.0中的if语句为例进行说明。

        现在我们用MFC来编写一个简单的画图程序,要求鼠标左键按下时,拖动鼠标,工作区即可画出鼠标的轨迹,鼠标左键松开时,停止作图。下面是我设计的各模块的代码:

       首先,在View类中添加三个成员函数OnLButtonUp,OnLButtonDown,OnMouseMove,同时添加两个CPoint类的私有成员m_MyPoint和m_oldPoint,再添加一个BOOL型变量m_DownOrUp。

OnLButtonUp函数模块的代码如下:

m_DownOrUp=FALSE;

View构造函数的代码如下:

m_MyPoint=0;

     m_oldPoint-0;

m_DownOrUp=FALSE;

OnLButtonDown函数模块的代码如下:

m_DownOrUp=TRUE;

     m_MyPoint=point;

     m_oldPoint=point;

OnMouseMove函数模块的代码如下:

    CClientDC dc(this);

    CPen MyPen(PS_DASHDOTDOT,1 ,#0000ff);

    CPen *oldPen=dc.SelectObject(&MyPen);

    if(m_DownOrUp=TRUE)

    {

        dc.MoveTo(m_MyPoint);

        dc.LineTo(point);

        m_MyPoint=point;

}

        做完了上面的工作,心里很高兴的就去运行了,运行后鼠标没有按下客户区也画鼠标轨迹线,考虑后,就去看看是不是哪块代码写错了,可是翻来覆去怎么也没发现哪有错误,最后把每行代码都仔细都审查了一遍,费了好大力气才发现if的条件写错了,把"=="写成了"=",我们换过来想,假如我们把TRUE写在前面,如果等号写成赋值符号,编译器就会报错,我们也会及早的发现问题,会给软件开发过程节省很大的时间和物力。

       之所以这样写,是因为这两个符号有完全不同的意思,一个等号就是赋值的意思,把右边的值赋给右边,而在这里实参是不可以放在左边的;而两个等号表示对比,看是否相等,实参可以放在左边。