C语言的运算优先

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

猜你喜欢

转载自blog.csdn.net/qq_36045385/article/details/79435434