//这是按你的代码走第一次打印时候结果:
a = 1727619126 a = 10 a=11 a=1727619126 //这是按你的代码走第二次打印的结果
a = 1713840182 a = 10 a=11 a=1713840182 /* 这是最外层变量a定义为stastic时候打印的结果 自动变量(auto变量)和静态变量(static变量)主要有以下几点区别:
1、static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。
2、static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。
3、如果用户不对static变量赋初值,则默认为0或'\0';而auto变量为不确定值。 */ a = 0 a = 10 a=11 a=0 //这是最外层a赋值为1时候打印结果: a = 1 a = 10 a=11 a=1 主要是变量a定义域的问题: 第一个a,未初始化,在第一个变量a里又定义了第二个变量,并赋了初值10,程序紧接着打印a=10,接着看第三个a是在第二个a基础上重新赋值11,再次打印a时候,a的值已经被变了(注意这个a前面如果加int的话,是错误的,但是如果加个int后不出错的话,需要用大括号将int a=11连同下面的输出语句括起来,相当于在第二个a里有定义看了一个a,这种情况打印出爱还是a=11),在最里层右大括号结束时候,里层大括号里的a就释放了,不存在了,所以,最后一个打印的是最外层的a是一个随机数
|