Loading AI tools
来自维基百科,自由的百科全书
在多数指令式编程语言中,增值和减值操作符指的是一类单目操作符,这些操作符相应地增加或减少其操作数的值。以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但被抛弃
对一个操作数应用增值或减值操作符,抽象来说将会创建一份操作数的拷贝,而创建拷贝的时间则根据操作符是前缀形式还是后缀形式来决定。所以使用这种操作符的表达式,实际用到的正是这份拷贝而不是操作数本身。所以编译器并不允许如i++ = 2;这样的语句出现。
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++语言支持运算符重载。因此需要区分重载的是前增/减运算符还是后增/减运算符。
重载前置的++、-- 运算符时,函数无形参:
TestClass& operator++();
TestClass& operator--();
重载后置的++、--运算符时,函数中需要一个int形参(即哑元,an additional dummy int argument):
TestClass& operator++(int);
TestClass& operator--(int);
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.