5.1.1
#include <stdio.h>
int i=1;
void main()
{
int i=i;
printf(" ");
}
注意,main()里面的i的值不是1。
原书给出的解释:
在C++中这样做是完全合法的(但显然不合理)。int
i=i,i变量从声明的那一刻开始就是可见的了,main()里的i不是1,因为它和main()外的i无关,而是一个未定义值。
5.1.2
#include <iostream>
using namespace std;
int main()
{
int x=2,y,z;
x *=(y=z=5); cout << x << endl;
/*
"="执行顺序是自右向左
z=5;
y=z;//y此时的值为5
x=x*y;//x此时的值为10
*/
z=3;
x ==(y=z); cout << x << endl;
/*
y=z;//y的值为3,z的值也为3.
x==3?//只是一个判断语句而已,不会改变x的值。但是x==3