- 算术 + 算术
- 标量 + 整数
- 整数 + 标量
- 算术 – 算术
-
标量 – 标量
请注意,加法和减法不是等效运算。
// expre_Additive_Operators.cpp // compile with: /EHsc #include <iostream> #define SIZE 5 using namespace std; int main() { int i = 5, j = 10; int n[SIZE] = { 0, 1, 2, 3, 4 }; cout << "5 + 10 = " << i + j << endl << "5 - 10 = " << i - j << endl; // use pointer arithmetic on array cout << "n[3] = " << *( n + 3 ) << endl; }指针加法
在加法运算中,如果其中一个操作数是指向对象数组的指针,则另一个操作数必须是整型。结果为与原始指针类型相同的指针和指向另一个数组元素的指针。以下代码片段阐述了此概念:
short IntArray[10]; // Objects of type short occupy 2 bytes
short *pIntArray = IntArray;for( int i = 0; i < 10; ++i ) { *pIntArray = i; cout << *pIntArray << "n"; pIntArray = pIntArray + 1; }虽然将整数值 1 添加到 pIntArray,但这并不表示“将 1 添加到该地址”,而是指“调整指针使其指向数组中的下一个对象”,而该对象恰好是在 2 字节(或者 sizeof( int ))之外。
注意
在 C++ 程序中很少找到 pIntArray = pIntArray + 1 形式的代码;若要实现递增,以下形式更可取:pIntArray++ 或 pIntArray += 1。指针减法
如果两个操作数都是指针,则减法运算的结果就是两个操作数之差(在数组元素中)。减法表达式产生类型 ptrdiff_t(在标准包含文件 STDDEF.H 中定义)的带符号的整数结果。
其中一个操作数可以是整型,条件是该操作数是第二操作数。减法的结果的类型与原始指针的类型相同。减法的值是指向第 (n – i) 个数组元素的指针,其中 n 是由原始指针指向的元素,而 i 是第二操作数的整数值。赋值运算符
语法
expression assignment-operator expression assignment-operator : one of = *= /= %= += –= <<= >>= &= ^= |=










