1.求下列代码运行结果:
int a = 7 , b = 9,t;
a*=a > b ? a : b;
t=a;
t = (b%10)+(b = 5)+t;
cout<<t<<endl;
答案:77
解析:a*=a > b ? a : b;
是在求a*(a和b中的最大者)=7*9=63,所以a现在被赋值为63,接着t=a=63。然后t = (b%10)+(b = 5)+t;,意思%号比=号和+号优先级高,故先算%,然后从右到左计算为:t=9%10+5+63;结果为77。
2.求以下代码运行结果
int y = 9;
cout<< y<<" "<<y++<<endl;
解析:计算机从右向左计算,y++意味着此时右边结果为9,之后y=y+1=10,然后结果10赋值给最左边的y。
3.求以下代码运行结果
int y = 9;
y = y*(y=7);
cout<< y <<endl;
解析:y = y*(y=7);括号优先级高,先算y=7,此时等式右面两个y都为7,故答案为49