增值和减值操作符在多数指令式编程语言中,增值和减值操作符指的是一类单目操作符,这些操作符相应地增加或减少其操作数的值。以C语言为例,“++”“--”操作符分别为增值操作符和减值操作符。 对操作数的限制(C语言)增值和减值操作符的操作数可以为整型、字符或者指针等,准确地说,这些操作符只要求其操作数必须为一个左值,也就是要求操作数必须为一个可以用在赋值符号“=”左边的表达式。 用法(C语言)
int i = 1; //运行完这条语句,i被赋值为1
int j = ++i; //运行完这条语句,i的值增了1变为2,而j的值为“++i”这个表达式的值为2
--j; //运行完这条语句,j的值减了1变为1,表达式“--j”的值为1但被抛弃
int i = 5; //运行完这条语句,i被赋值为5
int j = i++; //运行完这条语句,i的值增了1变为6,而j的值为“i++”这个表达式的值为5
j--; //运行完这条语句,j的值减了1变为4,表达式“j--”的值为5但被抛弃
原理(C语言)对一个操作数应用增值或减值操作符,抽象来说将会创建一份操作数的拷贝,而创建拷贝的时间则根据操作符是前缀形式还是后缀形式来决定。所以使用这种操作符的表达式,实际用到的正是这份拷贝而不是操作数本身。所以编译器并不允许如i++ = 2;这样的语句出现。 一些实际应用(C语言)
for( int i=0; i<5; i++ ){ 一些代码; } //应用于循环的计数
//dst和src为大小相同的整型数组,以下程序实现了把src数组内容复制到dst数组的功能
//用增值减值操作符读取数据比用数组下标读取数据效率要高得多
register int *p1, *p2;
for( p1=src,p2=dst; p1<&src[SIZE]; )
{
*p2++ = *p1++;
}
作为C++运算符C++语言支持运算符重载。因此需要区分重载的是前增/减运算符还是后增/减运算符。 重载前置的++、-- 运算符时,函数无形参: TestClass& operator++();
TestClass& operator--();
重载后置的++、--运算符时,函数中需要一个int形参(即哑元,an additional dummy int argument): TestClass& operator++(int);
TestClass& operator--(int);
参考书目
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve