不明白a=a-b;底下那一段加括号的是什么,为什么a的值又被带出括号了,而b又没有答案-3-1-34

#include<stdio.h>

int main()

{

int a=3, b=4;

a = a - b;

{

    int b= 2;

    a = a - b;

    b = a + b;

    printf("%d %d ",a,b);

}

printf("%d %d",a,b);

return 0;

}

在函数(括号)内,如果有变量名字和全局变量名字相同,那么在函数(括号)内的操作都是局部变量,函数(括号)外用的才是全局变量
此处第一个b是全局变量,第二个b是局部变量

程序执行行数a第一个b第二个b输出
第1行34未定义
第3行-14未定义·
第7行-142
第9行-342
第11行-34-1
第13行-34-1-3 -1
第17行-34-1-3 -1 -3 4

首先a变为-1,括号里,打印 -3,-1,次b为大括号内局部变量的2,出括号后a仍为-3,b为main函数范围下的b,为4,内大括号的b已被销毁·。

括号里面又声明了一个b,这括号里面用b的时候,括号里面的运算系统会运用括号里面声明的b,而括号外面不可以,括号外面的b是第一个声明的b,如果括号里面没有声明b,才会运用第一个声明的b