fenjichangqin 2015-03-20 06:48 采纳率: 100%
浏览 1568
已采纳

一段关于C++空间分配的代码的疑问

代码如下:
#include"stdafx.h"
class X{
public:
X(){}
~X(){printf("end");}
};
void f(int i)
{
if(i<10)
{
//goto jump1;
}
X x1;
jump1:
switch(i){
case 1:
X x2;
break;
//case 2:
X x3;
break;
}
}
int main()
{
f(1);
return 0;
}
为什么把//goto jump1,//case 2 任意一个去掉注释,程序就会有定义被跳过的问题?比如就算去掉//goto jump1的注释,jump1之后的代码中没有用到x1啊,为什么非要定义
x1呢?
另外,如果去掉//case2注释,那这和
if(i==1)
X x2;
else if(i==2)
X x3
这段代码貌似没啥区别啊,为什么后者可以通过编译呢?
求好心人解释,谢谢。

  • 写回答

4条回答 默认 最新

  • Gavin_1989 2015-03-20 08:05
    关注

    首先代码中不建议用goto语句,定义Xx1是因为输入大于10的时候使用的,另外建议复习下switch...case..的用法,
    switch(i){
    case 1:
    X x2;
    break;
    //case 2: // 后面的代码实际上是执行不到的
    X x3;
    break;
    }
    相当于 if ( i == 1 ) Xx2;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏