C++语法 连等“==”和等号“=”的区别


今天练了手冒泡排序,初始程序代码如下(伪随机):

#include <iostream>
using namespace std;

int main()
{
    int a[100];
    for (int i=0;i<100;i++){
        a[i]=rand()%900+100;
    }
    a[0]=0;                         //自主设定数组最前面的值,测试break效果
    a[1]=1;
    a[2]=2;
    int temp=0;                     //冒泡排序中暂存需要交换的值
    int count=0;                    //记录到break为止最外层for循环进行的次数
    bool change=false;              //设定参数判定终止for循环的条件
    for(int j=99;j>0;j--)
    {
        for(int k=0;k<=j-1;k++)
        {
            if(a[k]>a[k+1])
            {
                temp = a[k];
                a[k] = a[k+1];
                a[k+1] = temp;
                change=true;
            }
        }
        count=100-j;
        if (change==false)
            break;            
        else
            change = false;
    }
    for(int i=0;i<100;i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;
    cout<<"排序在第"<<count<<"遍冒泡结束后终止"<<endl;
    system("PAUSE");
    return 0;
}

但是程序运行结果中,总是显示“排序在第99遍冒泡结束后终止”,即最外层for循环全部运行了一遍,break没有起到效果……

找了半天没看出哪里有错误,后知后觉,是if判定中的连等号写成了等号……应为如下:

        if (change==false)
            break;            
        else

想必是从前学VB的习惯吧。那里边判定就是等号,所以怎么看也看不出来

就目前所知,连等“==”一般用于判定/比较两边的值,等号“=”则一般在赋值过程中使用

这种不属于编译错误,很难查错,一般需要逐行分析各变量的值才能发觉(尤其是存在上述知识错觉的情况下)

**谨记养成良好语法记忆与习惯的重要性**


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM