C语言程序的问题。

来源:百度知道 编辑:UC知道 时间:2024/05/03 08:11:41
#include <stdio.h>
main()
{
int a=25,b=5,c=4,d=1;
a+=b;
c*=d+5;
a%=c;
printf("%d,%d\n",a,c);
printf("%d\n",++a);
printf("%d\n",a++);
printf("%d\n",a);
getch();
}
输出结果为6,24 7 7 8
请哪位高手帮我解释下这个结果
a+=b 不就是a=a+b吗
为什么输出第一个a 为什么是6?而不是25+5?
帮我解释下a%=c
为什么最后输出a是等于8的。。。。
第一个printf输出a为什么=6?

仔细看程序,在printf("%d,%d\n",a,c)之前,a进行了两次运算,第一次:
a+=b,第二次 a%=c程序执行过程中个变量的值

int a=25,b=5,c=4,d=1; /* a=25 b=5 c=4 d=1 */
a+=b; /* a=30 */
c*=d+5; /* c=24 */
a%=c; /* a=6 a对c取模运算即求a除以c的余数在赋给a*/
printf("%d,%d\n",a,c); /* a=6 c=24 */
printf("%d\n",++a);
printf("%d\n",a++);
printf("%d\n",a);
getch();

a+=b; //a=a+b=25+5=30
c*=d+5; //c=c*(d+5)=4*(5+1)=24
a%=c; //a=a%c=30/24=6 (取余运算,a等于a除以c的余数)

很简单,因为你后面有个a%=b即a=a%c其中a=25+5=30,c=c*(d+5)=24(这里要注意括号),所以a%c=6(这是取余操作符).