求助!大括号分区域的问题。
#include<stdio.h>intmain()
{
inta = 3, b = 2, c = 1;
c -= ++b;
b *= a + c;
{
intb = 5, c = 12;
c /= b * 2;
a -= c;
printf("%d, %d, %d, ", a, b, c );
a += --c;
}
printf("%d, %d, %d\n", a, b, c);
}
最后一个输出里的c为什么等于-2?
单纯使用大括号有什么需要注意的吗?
一个大括号代表一个作用域
你在大括号里把所有变量都再次声明了一遍,所以说这些变量的修改与外部没有关系
所以c-=++b,即c-=3,也就是-2了 大括号划出了一个局部作用域,
在里面定义的b和c不影响外面的b和c,因为里面没有定义a,所以用的还是外面的a
所以a的值在局部作用域可以被改变,外部的b和c的值在局部作用域不会被改变
本帖最后由 qq1256740918 于 2020-4-30 11:13 编辑
永恒的蓝色梦想 发表于 2020-4-30 11:03
一个大括号代表一个作用域
你在大括号里把所有变量都再次声明了一遍,所以说这些变量的修改与外部没有关系 ...
意思是没有在大括号里声明的a,仍会执行大括号里的语句,把a的值带到外部。
而在大括号里声明的bc,并对bc改动,但外部的bc则不会执行大括号里的流程 qq1256740918 发表于 2020-4-30 11:11
意思是没有在大括号里声明的a,仍会执行大括号里的语句,把a的值带到外部。
是的,a可以,但是b和c不行
页:
[1]