switch(c)

{

case 0x01:

int temp = a + b;

....

break;

case 0x02:

break;

default:break;

}

此时会报如题所示错误

原因是因为C和C++中,一个变量的生命期(作用域)是这么规定的,中文还不好解释,英文原文是这样的:The scope of a variable extends from the point where it is defined to the first closing brace that matches the closest opening brace before before the variable was defined.,原文http://zhubangbing.blog.163.com/blog/static/5260927020109821055992/,上面的代码中这样写,在case 0x02中temp仍然有效,看看编译器提示的信息 cross initialization of int temp, 什么意思呢, 就是说跳过了变量的初始化,仔细想想,确实是这样,我们在case 1中定义了变量temp,在这个程序中,直到遇到switch的“}”右花括号,temp的作用域才终结,也就是说 在case 2 和 default 分支中 变量temp依然是可以访问的。考虑这样一种情况,如果switch匹配了case 2,这样case 1的代码被跳过了,那么temp就没有定义,如果此时在case 2的代码中访问了temp,程序会崩溃的。所以上面的程序应写成如下方式

switch(c)

{

case 0x01:

{

int temp = a + b;

....

}//这样的话temp的生命期到这里就结束了,在后面的case中temp就是未定义的,如果用到,编译阶段就会有提示

break;

case 0x02:

break;

default:break;

}

http://zhubangbing.blog.163.com/blog/static/526092702011931821900/

https://blog.csdn.net/zzwdkxx/article/details/27561393

最新文章

  1. mysql 数据类型拾遗
  2. ArrayFire与CUDA环境配置问题
  3. 怎样处理“error C2220: warning treated as error - no object file generated”错误
  4. Netty网络编程之NIO概览与简单应用
  5. (BFS)uva2554-Snakes & Ladders
  6. android学习笔记24——事件处理
  7. Sublime Text3自动保存的功能(失去焦点自动保存)
  8. centos 安装nginx
  9. HttpClient和 HtmlParser实现爬虫
  10. SSM实战
  11. WinCE系统声音定制
  12. 【野草】SQL Server之索引解析(一)
  13. 第k个素因子只有3 5 7 的数
  14. jquery-插件iCheck 使用
  15. 初学python之路-day04
  16. 第二单元电梯调度作业 By Wazaki
  17. centos7使用wordpress布署网站(1)
  18. rabbitmq系统学习(一)
  19. [译]Use Dependency Injection In WebForms Application
  20. 监控页面后退前进,浏览器文档加载事件之pageshow、pagehide

热门文章

  1. jquery的show()和hide()方法
  2. $.ajax的async设置true和false的区别一点笔记
  3. pip 安装 MySQL-python 报错
  4. MySQL in型子查询陷阱
  5. Draw your Next App Idea with Ink to Code
  6. eclipse导入项目时,仅项目名出现红叉
  7. codeforces263B
  8. [BZOJ 2743] [HEOI 2012] 采花
  9. [BZOJ 3498] [PA 2009] Cakes
  10. rsync 服务器搭建遇到的问题