练习4.13
int main()
{
int i; double d;
d = i = 3.5; //把i的值赋给了d
cout << d << endl; //3
cout << i << endl; //3
}
int main()
{
int i; double d;
i = d = 3.5; //把d的值赋给了i
cout << d << endl; //3.5
cout << i << endl; //3
}
练习4.14
if(42 = i) //表达式左侧必须是可修改的左值
if(i = 42) //把42的值赋给了i,42不为0,条件恒为真,提示:可能需要使用相等运算符而非赋值运算符
练习4.15
double dval;
int ival;
int* pi;
dval = ival = pi = 0; //错误:不能将指针的值赋给int
更改后:
double dval;
int ival;
int* pi;
dval = ival = *pi = 0; //指针所指的对象的值为0
练习4.16
if( p = getPtr()!= 0)
如果不加括号,比较运算符!=的运算对象是getPtr()函数的返回值和0,比较的结果不论真假将以布尔值的形式赋值给i。
如果加了括号:
if( (p = getPtr())!= 0)
则是调用getPtr函数得到一个值,赋给p,然后比较p和0是否相等
if (i = 1024)
if语句的条件部分将1024字面值赋给了i,然后检查赋值的结果是否为真,1024不为0,条件恒为真。
if (i == 1024)
判断i是否等于1024。