ページ 11

goto

Posted: 2012年9月13日(木) 09:48
by 世界
選択して分岐するプログラムを組んでいます。
goto分以外に指定したラベルに飛ばす方法ってあるんですか?

Re: goto

Posted: 2012年9月13日(木) 09:59
by beatle
switch はいかがでしょうか?変数に格納されている整数値に応じて分岐できます。

コード:

int x; // xには整数値を入れておく
switch (x)
{
case 0:
    // x == 0 のときの処理
    break;
case 10:
    // x == 10 のときの処理
    break;
default:
    // それ以外のときの処理
    break;
}

Re: goto

Posted: 2012年9月13日(木) 18:09
by オカピーα
トピックとは関係ないのですがよくある間違いです。
switch文のなかで変数を宣言してはいけません。
beatleさんが間違ってるわけではありませんよ?
僕はこのミスで散々苦しめられましたので
同じ思いをしている方が居たらと思って
ちょっと書いてみました。

Re: goto

Posted: 2012年9月13日(木) 20:30
by みけCAT
オカピーα さんが書きました:switch文のなかで変数を宣言してはいけません。
そんなことはない/言葉が足りないと思います。

コード:

#include <stdio.h>

int main(void) {
	int a=0;
	scanf("%d",&a);
	switch(a) {
		case 0:
			{
				int b;
				b=1+2+3+4+5+6+7+8+9+10;
				printf("%d\n",b);
			}
			break;
		case 1:
			{
				int i,s=0;
				for(i=0;i<=100;i++)s+=i;
				printf("%d\n",s);
			}
			break;
	}
	return 0;
}
http://ideone.com/k8hCG

Re: goto

Posted: 2012年9月13日(木) 21:40
by たかぎ
みけCAT さんが書きました:
オカピーα さんが書きました:switch文のなかで変数を宣言してはいけません。
そんなことはない/言葉が足りないと思います。
そうです。そんなことはありません。

コード:

switch (expression)
{
    int variable;
case 0:
    foo(&variable);
    printf("%d\n", variable);
    break;
case 1:
    bar(&variable);
    printf("%d\n", variable);
    break;
default:
    break;
}

Re: goto

Posted: 2012年9月13日(木) 23:24
by 世界
皆さん、詳しい解説ありがとうございました。