各位伙伴们,关于变量的作用域问题大家在学习C语言的过程中会经常遇到并且用到,而且这方面出错的概率比较高。今天我们就通过一道不错的题目来说一说,这道题里面陷阱不少,稍不留神就容易出错,请看题:
C语言
题目很简单,就问会输出什么?
这道题乍一看不难,但有不少迷惑你的点,比如变量被反复声明赋值,用变量给自己本身赋值,变量声明不赋值采用默认值等等。其实万变不离其宗,就是全局、局部变量的问题。来看具体解析:
解析:main函数中重新声明变量i和j,j的值未初始化,因此用j给本身赋值结果未定义,而if语句中声明k变量,此时k变量的作用域仅到if语句结束,因此,如果开始没有声明全局变量k,编译将不通过,错误原因是k未声明,而此程序开始就声明了全局变量k,后面k默认为全局变量,全局变量未初始化则默认初始化为0,所以k++打印的是0,但k变为1。
因此最终答案为:未定义,0。你做对了吗?
---------------------
网友评论