〔龍神録の館〕C言語の文法について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
array

〔龍神録の館〕C言語の文法について

#1

投稿記事 by array » 16年前

多分C言語の基本的な文法についてだと思います。
龍神録の館を見ていて、疑問に思っていた内容についての質問です。

1.「->」について
参照:--- ini.ccp ---
void input_bullet_info(bullet_info_t *binfo,int size_x,int size_y,int col_num,double range,int kaiten){
	binfo->size_x =size_x;←ピックアップ	binfo->size_y =size_y;
	binfo->col_num=col_num;	binfo->range  =range;
	binfo->kaiten=kaiten;
}
弾幕情報を初期定義する関数です(だと思います)

・binfo->size_x =size_x;
「->」って何だ?と疑問に思ってます。
今の今までこんな演算子知らないよ、とググったのですが「->」で検索しても全くヒットしない。

--- 自分の解釈 ---
PHPを勉強して(多分)メソッドと呼ばれるものではないかと最近知ったのですが、メソッドでググるとオブジェクト指向が(ry

とりあえず、実行結果から
input_bullet_info(&bullet_info[0],76, 76, 5,17.0,0);
で関数を呼び出せば「binfo->size_x =size_x;」とする事で
bullet_info[0].size_x = 76;
となる事は分かります。

長々と書きましたが、結局は「->」何ですか?という感じです。解説しているサイトなどを紹介してもらえると嬉しいです^^;


2.「num=(++num);」について
http://dixq.net/rp/35.html の一番下にある文法です。
「num=(++num);」→「++num;」でも等価ですよね。
しかし、あえて「num=(++num);」としている様に見えるので疑問に思っています。

バグ

Re:〔龍神録の館〕C言語の文法について

#2

投稿記事 by バグ » 16年前

アロー演算子でググってみてください。多分、ヒットします(^-^)

初級者

Re:〔龍神録の館〕C言語の文法について

#3

投稿記事 by 初級者 » 16年前

ptr->member

(*ptr).member
と同値です。


num = ++num;
は、なぜそう書かねばならないかがわかりません。

array

Re:〔龍神録の館〕C言語の文法について

#4

投稿記事 by array » 16年前

早いw
アロー演算子というんですね。
ググって一番上のサイトを見てみましたが、かなり分かりやすく書いてありました。
この関数の公開当時から疑問に思ってたのが馬鹿みたいです・・・・

バグさん、初級者さんありがとございます^^

Dixq (管理人)

Re:〔龍神録の館〕C言語の文法について

#5

投稿記事 by Dixq (管理人) » 16年前

構造体を使うとき

・ポインタを使わないで構造体を使う時は .
・ポインタを使って構造体を使う時は ->

と覚えておくといいですよb

ちなみに、最後の括弧は特に必要無いです。
こっちの方が見易いかなと思って残したんですが、スペースあけたら済む話です^^;
多分最初は

num = (++num) % 3;

みたいに書いてて、後半消したんじゃ無いかと思います・・。

array

Re:〔龍神録の館〕C言語の文法について

#6

投稿記事 by array » 16年前

> num = (++num) % 3;
>
> みたいに書いてて、後半消したんじゃ無いかと思います・・。

それなら納得です。
ちょっと特殊な形だったので、こう書けば処理速度が上がるよってのを期待してましたけどw

toyo

Re:〔龍神録の館〕C言語の文法について

#7

投稿記事 by toyo » 16年前

num = (++num);

num = (++num) % 3;
も未定義動作なので間違いではないでしょうか
副作用のあるnumを副作用完了点前に参照しています。

たかぎ

Re:〔龍神録の館〕C言語の文法について

#8

投稿記事 by たかぎ » 16年前

> num = (++num);

未定義ですね。
最適化オプションや将来的なコンパイラのバージョンアップ(サービスパック含む)で不具合が顕在化する危険性がありますので、修正することをお勧めします。

Dixq (管理人)

Re:〔龍神録の館〕C言語の文法について

#9

投稿記事 by Dixq (管理人) » 16年前

なるほど、未定義のようですね。直しておきます。

ご指摘ありがとうございますm(_ _)m

閉鎖

“C言語何でも質問掲示板” へ戻る