求解释关于局部变量的问题

img

求解释第二行2,3,-2 a在外面没有变化不应该是3吗 b++所以是3 c是-2


#include <iostream>
using namespace std;

void main()
{
    int a = 3, b = 2, c = 1;
    c -= ++b;//c=1-3=-2  b=3;
    b *= a + c;//b=2*(3-2)=2;
    {
        int b = 5, c = 12;
        c /= b * 2;//c=c/10=1
        a -= c;//a=a-c=3-1=2
        cout << a/*2*/ << "," << b/*5*/ << "," << c/*1*/ << endl;
        c += --c;
    }
    cout << a << "," << b << "," << c << endl;
}

因为你的b、c是重新定义了int,

int b = 5, c = 12;

a没有定义,所以a用的就是外面的a

你这个都不算是函数,a -= c;//a=a-c=3-1=2
这句话是在main函数里面执行的,所以a的值会改变