永发信息网

C语言作用域问题

答案:6  悬赏:50  手机版
解决时间 2021-02-15 00:07
#include main(){int i=5;{i++;} printf("%d",i);} 块总用域不是只在花括号内的吗,i++只作用于内层花括号,i++只在内层花括号中实现,最后结果应该是5,为什么最后结果是6呢
最佳答案
你这是没有明白作用域的真正含义,首先,谈作用域,其对象是变量,比如i,a,b。而不是表达式,比如你说的i++。其次,你在main中定义了变量i,那么在整个main中,它都是有效的,除非你在内存花括号中重新定义i,那么在花括号中第一个i会暂时失效,执行完花括号中的语句后,第一个i才恢复有效。对表达式,我们关心的是其是否被执行。比如你给的例子中,表达式i++外面的花括号有没有都一样,i++都会被执行。
全部回答
其实只是按顺序执行的语句,i++的部分,只是相当于简短的运算表达式,没有域的问题。
i++ 相当于 i=i+1;所以i的结果是6。你的花括号有没有都是一样的。
你加不加花括号是一个样子的,C语言定义,一条语句以;号结束,而{}的意思是,在{}内不管有多少条语句,都计为一条语句,称为复合语句。而你说到的作用域这个问题,你的理解有误,作用域指的是在一个函数内,而不是在一条语句内。不管你加不加{},i++都执行,并且i+1。 要谈到作用域的话,我给你举个例子: #include void zuoyongyu(int i) { i++; } void main() { int i=5; zuoyongyu(i); printf("%d",i); } 这样子的输出结果就是5,因为一个变量的作用域只限定在一个函数内,函数zuoyongyu的变量i自增变为6,并不影响到main函数中的i的值。 希望能帮助到你。

好吧  我来。 前面的那个int change(int number) 是函数原型的声明。因为你在main函数里面用到了这个。如果你不想用。你就把后面的那个 int change 这个函数和main 函数换一个位置就不要开头这个了。

 result = change (number)  就是把 change()函数的返回值传递个 result

我的理解哈: 这是个变量作用域问题:当你的花括号内重新定义了一个 变量 以后,这个变量就在花括号之内有效,出了花括号这个变量就没用了。比如,把你的程序改成: #include main() { int i=5; {int i=5; i++;} printf("%d",i); } 实验一下,最后的i得5。如果你把printf改到花括号内,i就得6。这说明花括号内的变量i是独立于括号外定义的i的。 当你花括号内没有定义与括号外变量重名的变量时,所有变量继承。这也就是说在花括号里,也可以对于其他变量操作,而只是新定义的重名变量的作用域在你的花括号之内。你来个i++,i自然加一了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
男朋友说不确定和我结婚的提前下,是不会和我
上联:东启明,西长庚,南箕北斗,朕乃众星主.
小杨梓岭在哪里啊,我有事要去这个地方
狂野飙车8每日任务怎么做 每日任务在哪里接攻
福彩快乐8怎么去啊,我要去那办事
求一个战锤40K战争黎明2混沌崛起的修改器别是
为什么说在山顶、低凹地和土层瘠薄的地方不宜
谢老大凉皮鉴湖景园店地址在什么地方,想过去
qq炫舞中星光藏宝图在哪里
方庄彩票大厅地址在什么地方,我要处理点事
奇艺寿衣殡葬用品批发怎么去啊,有知道地址的
遇到酒后闹事怎么办
为什么百度网盘下载的的解压包老是解压失败
已知x二n次方等于五,负二x的三n次方的平方减
襄阳市博爱医院地址在什么地方,想过去办事
推荐资讯
寄存器是一种存取什么数据的电路
海带和什么菜一起炖有营养?
点点美容美发地址有知道的么?有点事想过去
好听的中文名字男孩,姓杜的
去英国艺术留学的费用贵吗
在洛阳买二手房在银行办完贷款手续多长时间能
某高中1班共40人.在体育运动会,参加跳远的人
文琴教育地址在什么地方,想过去办事
qq空间红警大战科技总和是什么达到40是什么意
开打印社需要什么设备?
下列不属于生物的是CA. 菊花B. 病毒C. 雪花D.
旺都理发烫染中心怎么去啊,我要去那办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?