程序看不太懂,a=3又a=5,我取5算的,结果不应该是6 10吗?

 

输出:

6 5

4 8

具体原因如下:

#include <stdio.h>
int a = 3;   //这个a是全局变量
main()
{
	int s = 0;
	{
		int a = 5; //这个a是局部变量,作用范围仅在本{}内
		s+=a++;    //先执行s+=a,s = s+a = 0+5=5;然后执行a++,a=6,因为本作用域内有局部变量a,所以取就近的局部变量
		printf("%d %d \n",a,s);//输出6 5
	}
	s+=a++; //出来大括号以后,{}里声明的a销毁了,此时使用全局变量a = 3
	//先执行s+=a ,s= s+a= 5+3=8,然后执行a++,a=4
	printf("%d %d \n",a,s);//输出4 8

}

 

输出: 6 5

            4 8 

a++就是a=a+1,第一次a++就a变成6了,第二次就是7