A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© koukou 中级黑马   /  2014-6-8 18:44  /  1076 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天在基础课上,老师讲到作用域,我想到我以前解答的一道关于C语言作用域的问题,希望能给同学一点帮助
#include<stdio.h> main(){int i=5;{i++;} printf("%d",i);} 块总用域不是只在花括号内的吗,i++只作用于内层花括号,i++只在内层花括号中实现,最后结果应该是5,为什么最后结果是6呢?解答 你这是没有明白作用域的真正含义,首先,谈作用域,其对象是变量,比如i,a,b。而不是表达式,比如你说的i++。其次,你在main中定义了变量i,那么在整个main中,它都是有效的,除非你在内存花括号中重新定义i,那么在花括号中第一个i会暂时失效,执行完花括号中的语句后,第一个i才恢复有效。对表达式,我们关心的是其是否被执行。比如你给的例子中,表达式i++外面的花括号有没有都一样,i++都会被执行。

3 个回复

倒序浏览
说得直接些,就是看花括号内是否有重新定义了一遍
回复 使用道具 举报
可以试一下使用插入代码功能,这样看得有点晕
回复 使用道具 举报
每天进步一点点 发表于 2014-6-9 11:19
说得直接些,就是看花括号内是否有重新定义了一遍

一句话总结 说的好~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马