夏末薄荷 2021-06-18 23:04 采纳率: 91.7%
浏览 11
已采纳

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

 

  • 写回答

3条回答 默认 最新

  • qfl_sdu 2021-06-18 23:40
    关注

    输出:

    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
    
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?