代码如下:
#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
这段代码貌似没啥区别啊,为什么后者可以通过编译呢?
求好心人解释,谢谢。
一段关于C++空间分配的代码的疑问
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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;本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记