s7龙血武姬打野出装:一道C语言题目,希望高手给个详细的解答

来源:百度文库 编辑:神马品牌网 时间:2024/05/07 11:14:07
main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}

我来给你分析分析:采用turbo c
i++的运算规则是先引用再自加,所以6+7+8而i的值变成了9
++k的规则是先自加然后在引用,所以7+8+9而k的值变成了9
所 以最终i=9,k=9
a=21,b=24;
由于不同的编译样器的编译方式不一样,所以答案也许有所不同,例如turbo的编译方式是对a=(i++)+(i++)+(i++); 每一个都进行运算,而vc是分别对三个(i++)进行运算

i=9 k=9
a=21 b=24

a=(i++)+(i++)+(i++);就相当于a=6+7+8

b=(++k)+(++k)+(++k);就相当于b=7+8+9

无论i++还是++k,最后都需要输出+1后的值,所以i和k的值相同,但是运算过程中的先后顺序决定了a和b的值是有差别的

main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}
不同的编译器运行的结果会有所不同,i++为后++,在a=(i++)+(i++)+(i++);赋值之前,i的值保持为6 ,语句运行后,再对i进行三次自加运算,所以a的值为18,i的值为9;
++k是前++,在b=(++k)+(++k)+(++k); 赋值语句运行之前就对k进行三次自加运算,K的值为9,所以b==9+9+9==27;
最后的运行结果为
i=9,k=9
a=18,b=27

main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}
个人认为答案为:
i=9,k=9
a=24,b=24
虽然i++和++k运算顺序不同。但(i++)和(++k)的运算顺序应该是一样的。