起因是群里同学问的代码执行结果,直接把图放上来:
一个是j的输出值,一个是k的输出值。
答案是0和0;
开始还觉得挺简单的,但是如果让我答还不一定能答对。函数里局部变量j的值赋值为全局j的值,而全局变量j没有赋值,默认初值为0;而判断语句判断为真,执行局部变量k的赋值,if语句没有加上花括号{},局部变量k有效范围就是这一句话,如果在if中加上花括号,输出k值,可以看到k值为1。if执行结束后k值被释放,再输出k值的时候,就为全局变量k的值了,所以输出为0.
起因是群里同学问的代码执行结果,直接把图放上来:
一个是j的输出值,一个是k的输出值。
答案是0和0;
开始还觉得挺简单的,但是如果让我答还不一定能答对。函数里局部变量j的值赋值为全局j的值,而全局变量j没有赋值,默认初值为0;而判断语句判断为真,执行局部变量k的赋值,if语句没有加上花括号{},局部变量k有效范围就是这一句话,如果在if中加上花括号,输出k值,可以看到k值为1。if执行结束后k值被释放,再输出k值的时候,就为全局变量k的值了,所以输出为0.