几道c++基础练习题,需要详细的分析,

问题描述:

几道c++基础练习题,需要详细的分析,
设 int a = 12,执行完语句a += a -= a * a 后,a 的值是( ).
A.552 B.264 C.144 D.-264
要求以下程序的功能是计算:s = 1 + 1/2 + 1/3 + … +
1/10
void main( )
{ float s = 1.0;
for (int n = 10; n > 1; n -- )
s = s + 1/n;
cout

D,C,B,B,B,D,D
第一题:a += a -= a * a ; ==》 a += (a -= (a * a));结果为:-264 (编译执行结果一致).
第二题:s = s + 1/n;由于n为int类型,1/n为取模运算 n只要大于1 ,1/n始终为零.
第三题:只要定义了变量,如果变量没有初始化,那么编译器在编译的时候变量会赋一个不确定的值.不确定值位的长度和变量的类型相同,故执行相加表达式正确.
第四题:弄清楚(a,c)的运算规则就ok了,(编译后执行结果一致).
第五题:if ( b = = 0 ) m = 1; n = 2;c/c++语言规定一个语句的结束符为分号“;”和“}”,这句有两个分号故是两条语句.
第六题:这个题得明白变量赋值和指针赋值的区别,a=b=10和*p=a=10是不相同的,*p=a=10,p指针内存的值其实是a变量在内存中的地址,而第一个a=b=10,a地址内存的内容就是a的值,也就是10.
a = b,b = c,c = a;顺序执行结果为:
a=b ,// (a=30,b=30,c = 40);
b = c,//(a=30,b=40,c = 40);
c = a;//(a=30,b=40,c = 30);(编译后执行结果一致)