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.