c++第二十五天
p129~p131:
1、赋值运算的左侧运算对象必须是一个可修改的左值。
2、赋值运算满足右结合律。
3、赋值运算的结果是它的左侧对象,并且是一个左值。
验证:
#include<iostream> using std::cout; using std::endl; int main() { int a, b, c; b = 2; c = 3; (a = b) = c; // 先计算a = b;返回值为a,再计算a = c; cout << a << endl; return 0; }
4、赋值运算符的优先级较低,在条件语句中,赋值部分应该加上括号。
练习 4.13
#include<iostream> using std::cout; using std::endl; int main() { int i; double d; d = i = 3.5; cout << i << " " << d << endl; i = d = 3.5; cout << i << " " << d << endl; return 0; } /* output: 3 3 3 3.5 */
练习 4.14
if (42 = i) // ... 编译不出来
if (i = 42) // ... i的值为42,转换为布尔值1,条件为true
练习 4.15
指针类型和算数类型无法相互转化。
练习 4.16
修改:
(a) if ((p = getPtr()) != 0) (b) if (i == 1024)