一道容易上当的C语言题目,你要不要试一试?

博客围绕C语言变量作用域问题,通过一道题目展开。题目中变量存在反复声明赋值等迷惑点,实则是全局、局部变量问题。解析指出main函数中j未初始化,赋值结果未定义,if语句中k作用域有限,全局k未初始化默认值为0,最终答案是未定义,0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各位伙伴们,关于变量的作用域问题大家在学习C语言的过程中会经常遇到并且用到,而且这方面出错的概率比较高。今天我们就通过一道不错的题目来说一说,这道题里面陷阱不少,稍不留神就容易出错,请看题:

 

C语言

 

题目很简单,就问会输出什么?

这道题乍一看不难,但有不少迷惑你的点,比如变量被反复声明赋值,用变量给自己本身赋值,变量声明不赋值采用默认值等等。其实万变不离其宗,就是全局、局部变量的问题。来看具体解析:

解析:main函数中重新声明变量i和j,j的值未初始化,因此用j给本身赋值结果未定义,而if语句中声明k变量,此时k变量的作用域仅到if语句结束,因此,如果开始没有声明全局变量k,编译将不通过,错误原因是k未声明,而此程序开始就声明了全局变量k,后面k默认为全局变量,全局变量未初始化则默认初始化为0,所以k++打印的是0,但k变为1。

因此最终答案为:未定义,0。你做对了吗?

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值