中国最美的女兵:请教高手关于编程的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 05:03:41
用C++便编译器边一个程序,计算表达式的值:
#include<iostream>
#include <cmath>
using namespace std;
int main(){
int a=3,b,c;
cout<<(a=b=(c=a+=6))<<'\t';//运行结果为12,而我
//以为是9
int x=2.5,y=4.7;a=7;
cout<<(x+a%3*int(x+y)%2/4)<<'\t';//运行结果为2
//而我以为是2.5
return 0;
}
请你们给我解释一下为什么分别是12和2,
而不是9和2.5 给我分析一下编译器对表达式的计算步揍 先谢谢各位了

第1个:先做(c=a+=6)得到c=9,然后b=c,所以b=9,最后a=b,所以结果是9
第2个int(x+y)的结果是6,又%,*,/是同级运算符,所以要从左做到右,7%3=1*6=6%2=0/4=0,又x是int型的,所以x+0=2

第1个,确实为9,不是12
第2个,既然X,Y为INT型,那么处理的时候会舍弃小数位(直接舍弃,非4舍5入)作位整数来处理