概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C カンマ演算子
2006年09月12日 (火) | 編集 |
少し金が補充されたのでDSの脳トレを買ってみた。2400円台とか実にリーズナブル。
早速友人の家で音声じゃんけんゲームとやらで脳年齢を測ってみる

……
30歳と出た


あと1年と少し猶予があるっつーの

全く失礼な。
不愉快な思いをした俺は四捨五入しても20歳な歳若き友人に同じものをやらせてみた。



80歳と出た


OK、俺若い

やはり脳は使ってないと駄目だな。
さて。

文字通り、式をカンマ(,)で区切ったものをカンマ演算子というのだそうだ。

式1,式2,…以下略,式n

カンマで区切られた式は左から右に順に評価され、
式全体の値としてはもっとも右の式の値になるとか。
これはループの条件式に使うと便利なんだそうだ。

例えば、scanfでデータ入力を行うようなループにおいて
特定のデータ(-9999とか)を終了条件にするには

scanf("%d",&a);
while(a!=-9999){
 以下略
 scanf("%d",&a);
}


こんな風にscanfを2回書く必要がある。2度読みというやつだ。
例題5のデータの「終わりのあるプログラム」という項目でやったな。
が、カンマ演算子を使うとこういうややこしい2度読みを行わずに記述できるのだそうだ。

while(scanf("%d",&a),a!=-9999){
以下略
}


こんな感じに。
どっちで書いてもいいのだろうが、こちらの方が1行で済むのでスマートと言えるだろう。
式だけ見ても何がなんだかよく分からんけど。

まあ、この書式でaに-9999が入力されるまで繰り返す、と覚えておけばよかろう。
相変わらず芸が無いが。

また、for文なんかの条件式にも使えるらしい。

for(i=0,j=n;i‹j;i++,j--)

こんな感じで。
最初にi=0、j=nを行って、i
分からんので、例題でも見てみよう。

void main(void)
{
 int dat,sum=0;
 while(printf("data? "),scanf("%d",&dat)!=EOF){
  sum=sum+dat;
  printf("合計は%dだぜ\n",sum);
 }
}


sum=sum+dat;から分かるが、値を入力し、その合計を求めるだけのプログラムだな。

input_c_test.jpginput_c_test2.jpg
こんな感じ

この場合の,は単に関数を区切っているだけのもののようだ。
,を使わずとも、

input_c_test3.jpginput_c_test4.jpg
こんなんでも可

また、EOFではなくて特定の値の場合は、

input_c_test5.jpginput_c_test6.jpg
こんな感じになる。

丸っきり冒頭のwhile文と同じな訳だが…
ううむ。
まあ使えればスマートになると覚えておけばいいかね。

まとめよう。

お前はそのループを記述するのに5行使った…
だが、それを3行で成し遂げた演算子がおる
そ、その演算子の名は…!


以上。
これでなくては出来ない何か、が無いと覚え難いなどうにも。
スポンサーサイト

コメント
この記事へのコメント
ハハハ( *´∀`*)σ)´Д`)
三十路まっしぐらだわね!
あんたの20代は終わったんだよ!
潔く三十路におなり


ちなみに私の脳年齢は38才だよ
(ノ)・ω・(ヾ)ムニムニ
2006/09/12(火) 20:56:02 | URL | みぃたん #-[ 編集]
まだ終わってねーっつの


しかしDSはこのテのソフト多いな。
いっそ専門分野に傾倒して数学とか物理とかの携帯型学習端末になってくれても面白いかもしらん。

需要が出るかどうかは知らんが。
2006/09/13(水) 00:22:20 | URL | Forest #-[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。