请教c++里的一个语句的意思

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:59:51
我看到这么一个程序:
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;

class intArray
{
private:
int *array; //整数序列首地址
int length; //序列中的整数个数
public:
//构造函数,从文件中读取数据用于初始化新对象。参数是文件名。
intArray(char *filename);
void sort(); //对整数序列按非递减排序
~intArray();
void writeToFile(char *filename);
};

intArray::intArray(char *filename)
{
ifstream myFile(filename);
int len=300;
array=new int[len];
length=0;
while(myFile>>array[length++]);
length--;
myFile.close();
}

//*************333***********
void intArray::sort()
{
for(int i=0;i<length-1;i++)
for(int j=i+1;j<length;j++)
if(array[i]>array[j])
array[i]^=array[j],array[j]^=array[i],array[i]^=array[j];
}

//**********666*********

intArray::~intArray()

 
 
 
该语句的意思是对换 array[ i ] 和 array[ j ] 的值(利用按位异或运算:^ )。

其实对换两个变量的值的方法有三种:
1)用监时变量(最简单、最有保障、可用范围最广,且在多数情况下最快)
2)用按位异或(bitwise XOR)操作(跟方法 1 比较:可用范围小得多,且效率可能较低)
3)用加减法 (最受限制的方法)

按位异或赋值运算符( ^= ):
http://www.dvbbs.net/tech/program/2006042860829.asp
方法 2 的讲解:
a)http://www2.flash8.net/Teach/452.htm
b)http://en.wikipedia.org/wiki/Xor_swap_algorithm

至于为什么调用逗号,最有可能的原因 richardbao2000 已经说了。
csdengxm 则说的详尽些。
我想补充的是,在这种语境中,逗号能保证那三小句从左到右依次执行
(调用函数时,用来隔开被传入的参数的逗号则不提供这种保证)。

这里有提及逗号操作符:
请教c++里的一个语句的意思 请教一个 C语言里的语句的写法 请教一个C语句 请教一个jsp里的if语句的用法 c语言中的语句的意思 HTML语句body里的onload语句什么意思?? 这个程序里语句的各种意思 请问一个sql语句的意思~? 一个VB的语句,谁知道什么意思 [c]一个赋值语句的问题