概述:
表达式,由操作数和运算符组成。
笔试中通常的考点有操作符的优先级、异或等关系运算。
4.1 赋值语句
赋值运算符"=",操作符左边代表着存储单元的地址,称为左值,右边带表着需要的值,称为右值。
注:赋值操作符的左操作数必须是非const的左值。
int const& max(int const& a, int const& b) { return a > b ? a : b; } int& fun(int& a) { a += 5; return a; } int* fun2(int* a) { return a; } int main() { int ii = 10, j = 20; fun(ii) = 800; // 语句1 正确 执行后 ii = 800 printf("%d", ii); max(ii, j) = 200; // 语句2 错误 表达式 max(ii, j)不是可修改的左值 printf("%d", ii); fun2(&ii) = 200; // 语句3 错误 无法从int转化为int* printf("%d", ii); *fun2(&ii) = 200; // 语句4 正确 printf("%d", ii); system("pause"); }
其次,赋值操作符具有右结合特性。当表达是含有多个赋值操作符时,从右向左结合。
4.2 自增与自减运算符
前缀运算时"先变后用",而后缀运算时"先用后变"。
以++为例:
前缀:++a 表示取a的地址,增加它的内容,然后把值放在寄存器中;
后缀:a++ 表示取a的地址,把它的值装入寄存器,然后增加内存a的值。
由于个人原因,今天先看到这里,明天继续 ^-^ ,未完待续.....
时间: 2024-10-05 14:47:21