程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-一段關於C++空間分配的代碼的疑問

c++-一段關於C++空間分配的代碼的疑問

編輯:編程綜合問答
一段關於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
這段代碼貌似沒啥區別啊,為什麼後者可以通過編譯呢?
求好心人解釋,謝謝。

最佳回答:


首先代碼中不建議用goto語句,定義Xx1是因為輸入大於10的時候使用的,另外建議復習下switch...case..的用法,
switch(i){
case 1:
X x2;
break;
//case 2: // 後面的代碼實際上是執行不到的
X x3;
break;
}
相當於 if ( i == 1 ) Xx2;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved