いつもお世話になっております。
いきなり本題ですが問題になっている言語はPHPを使用しています。
(PHPはC++と同様の構文で記述できるのでC++で可能であればPHPでも同じ構文が使える可能性があります)
Wikiを調べてみるとC#では以下の構文が使用可能みたいです。
以下と同様の処理をPHPかC++で使えるのでしょうか?
switch (someInteger)
{
case 0:
case 1:
return 1; // 変数someIntegerが0か1の時に実行
case 2:
someInteger++;
goto case 3: // case 3も実行
case 3:
文A;
break;
default:
文B;
break;
}
以上になります。よろしくお願いします。
switchのcaseにgotoで飛ぶ方法について
Re:switchのcaseにgotoで飛ぶ方法について
C++では使えないようです。
(略)\zikken.cpp:11: error: expected identifier before "case"
(略)\zikken.cpp:11: error: expected `;' before "case"
(略)\zikken.cpp:13: error: duplicate case value
(略)\zikken.cpp:11: error: previously used here
でも、もし使えるならPHPそのもので実験した方がいいと思います。
#include <stdio.h> int main(void) { int a=1; switch(a) { case 0: printf("test0\n"); break; case 1: printf("test1\n"); goto case 2: break; case 2: printf("test2\n"); break; case 3: printf("test3\n"); break; default: printf("testerr\n"); break; } return 0; }(略)\zikken.cpp: In function `int main()':
(略)\zikken.cpp:11: error: expected identifier before "case"
(略)\zikken.cpp:11: error: expected `;' before "case"
(略)\zikken.cpp:13: error: duplicate case value
(略)\zikken.cpp:11: error: previously used here
でも、もし使えるならPHPそのもので実験した方がいいと思います。
Re:switchのcaseにgotoで飛ぶ方法について
即レスありがとうございます^^
コンパイルまで通していただきありがたいです♪
私の方でも一応PHPでは同様の構文で実行してみたのですが
同じくエラーで飛ぶことはできませんでした。
なので、もしかしたらC++では微妙に構文が違うのかと思い質問した次第でしたが・・・使えなさそうですね。
コンパイルまで通していただきありがたいです♪
私の方でも一応PHPでは同様の構文で実行してみたのですが
同じくエラーで飛ぶことはできませんでした。
なので、もしかしたらC++では微妙に構文が違うのかと思い質問した次第でしたが・・・使えなさそうですね。
Re:switchのcaseにgotoで飛ぶ方法について
caseへのgotoは使えません
ただ質問の例であればbreak;を書かなければcase 3も実行されます
それとラベルを別に書けば飛べます
int main(void)
{
int a = 1;
switch(a)
{
case 1:
printf("1 ");
goto CASE3;
break;
case 2:
printf("2 ");
break;
CASE3:
case 3:
printf("3 ");
break;
case 4:
printf("4 ");
break;
}
return 0;
}
ただ質問の例であればbreak;を書かなければcase 3も実行されます
それとラベルを別に書けば飛べます
int main(void)
{
int a = 1;
switch(a)
{
case 1:
printf("1 ");
goto CASE3;
break;
case 2:
printf("2 ");
break;
CASE3:
case 3:
printf("3 ");
break;
case 4:
printf("4 ");
break;
}
return 0;
}
Re:switchのcaseにgotoで飛ぶ方法について
> caseへのgotoは使えません
ありがとうございます。
他にどうしても他のcaseを実行させたい場合は、if で break の実行条件を書くなどですかね^^;
もしもcaseにgotoで飛ぶ事ができるのならコード的には読みやすくなるかと思い質問させてもらいました。
読みやすさを考慮して組むことにします。
色々有難うございました♪
ありがとうございます。
他にどうしても他のcaseを実行させたい場合は、if で break の実行条件を書くなどですかね^^;
もしもcaseにgotoで飛ぶ事ができるのならコード的には読みやすくなるかと思い質問させてもらいました。
読みやすさを考慮して組むことにします。
色々有難うございました♪
Re:switchのcaseにgotoで飛ぶ方法について
確かにそうですね!ありがとうございます^^
一応、C++で caseへのgotoは使え無いという事で解決とさせて頂きます。
沢山の意見有難うございました。
一応、C++で caseへのgotoは使え無いという事で解決とさせて頂きます。
沢山の意見有難うございました。