トップページgamedev
1001コメント348KB

Kazukiの同人3DRPG制作【第二話】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001Kazuki2010/09/19(日) 04:46:22ID:6P+qj1XK
Kazukiの同人3DRPG制作 公式サイト
ttp://www.kazuki-sendo.com/game/


発展途上中の素人Kazukiを中心として
DirectX9による3DRPG制作に挑戦します。


開発言語は、C++です。
長く苦しい戦いになると思われますが、
同人ゲーム制作の限界への挑戦が、当企画のテーマでもあります。
0821名前は開発中のものです。2010/09/22(水) 02:21:32ID:roNSNMqe
ここまで無知を晒して何が楽しいんだろう
0822名前は開発中のものです。2010/09/22(水) 02:21:56ID:KlyUHZKS
>>820
;は正確には、EOP?だったかな?

ちょっと忘れた。

とにかく、何かの意味なんだよ。


でも、
#define a 0

こんな風に最後に;を入れない場合もある。

;が文章の終了という意味なら、
これを証明することが出来なくなる。

なので、文章の先頭がゴール地点で
座標0に来ると次の行を読むと考えればいい。


なので、後ろから前に向かって読むのだろう。

0823名前は開発中のものです。2010/09/22(水) 02:27:54ID:ZhuFa4Bc
後ろから読むコンパイラww

ビットレベルで下位から計算される(そういう場合も当然ある)ことと、ソースを読む方向が
なんで同レベルで語れるんだ。

つか、プリプロセスの話とコンパイル時の話と実行時の話が一緒くただよな
0824名前は開発中のものです。2010/09/22(水) 02:27:56ID:uXUhUOYT
GCCのソース読んできたら良いと思うよ。
いや、俺も読んだ事無いけど普通にソースの先頭から読み込んでるだろうし
インタプリタじゃ無いんだから読み込み順に処理するわけでも無いし

てかファイルの終端が分からなかったら終端から読むなんで事出来ないっていう
0825名前は開発中のものです。2010/09/22(水) 02:28:54ID:KlyUHZKS
#define A 1
int b = 1;

b=A+b;


この式だけを後ろから分解


1.;
2.b ←ここには1が入る
3.+
4.A
5.=
6.b ←ここには2が入る


各演算子は、それぞれの向きで考える。


+は、左から右
=は、右から左

これで俺が言いたいこと解った?
0826名前は開発中のものです。2010/09/22(水) 02:30:43ID:ZhuFa4Bc
> #define a 0
> ↑
> こんな風に最後に;を入れない場合もある。

そりゃ、それを処理するのはプリプロセッサでコンパイラじゃないからなww

それに、前から読んだとき終わりがわからないなら、後ろから読んだって初めが分からなくなるだけだしwww
0827名前は開発中のものです。2010/09/22(水) 02:31:35ID:uXUhUOYT
てか、コンパイラの動作なんて言語仕様と全く関係無いんだけどな。
コンパイラは最終的に仕様にそった実行ファイルを吐けば中でどううごくかなんて言語側で制限しないから。

0828名前は開発中のものです。2010/09/22(水) 02:32:46ID:a9eeuuzq
どうやって行と行を見分けるん?
見分けられたとして、行の終端から調べるためには終端がどこにあるかわからないと出来なくね?
0829名前は開発中のものです。2010/09/22(水) 02:35:49ID:uXUhUOYT
もしかしてこいつの頭の中ではコンパイラはアセンブラ程度の物なのかもしれない
0830名前は開発中のものです。2010/09/22(水) 02:38:38ID:KlyUHZKS
b=b+(A+b);

これを後ろから読んで分解

1.;
2.) ←関数呼び出しを意味する
3.b
4.+
5.A
6.( ←関数終了を意味する
7.+
8.b
9.=
10.b

このように考えれば、
各演算子の優先順位もキレイに説明出来る。
0831名前は開発中のものです。2010/09/22(水) 02:39:39ID:h9k+fC0i
int main()
{

struct test sttest;

sttest.n = 10;
printf("%d\n", sttest.n);

return 0;
}


struct test{
int n;
};

これが動かないのは何で?
0832名前は開発中のものです。2010/09/22(水) 02:40:24ID:ZhuFa4Bc
関数呼び出し…

( ゚д゚) ・・・
 
(つд⊂)ゴシゴシ
 
(;゚д゚) ・・・
 
(つд⊂)ゴシゴシゴシ
  _, ._
(;゚ Д゚) …!?
0833名前は開発中のものです。2010/09/22(水) 02:41:26ID:uXUhUOYT
まさかの関数登場
0834名前は開発中のものです。2010/09/22(水) 02:41:30ID:jq8AzszG
「この式だけを後ろから分解」ってのが都合が良すぎない?

終端が分からないっていうなら一番最初はソースコードの最後にならないとおかしくね?
行単位でっていうなら

#define A 1 int b=1; b=A+b;

って書かれたら

1.;
2.b ←はい、値が分かりません
0835名前は開発中のものです。2010/09/22(水) 02:41:48ID:a9eeuuzq
もう一回>>280読んでこようか
あとb= (a+b)+b;はどう処理するん?
0836名前は開発中のものです。2010/09/22(水) 02:42:19ID:KlyUHZKS
配列変数を指定するとき、

int a[2]

↑こう書くよね?

これを後ろから分解

1.]
2.2
3.[
4.a
5.t
6.n
7.i

なので、[ ]←これは順位が1位なのだよ
0837名前は開発中のものです。2010/09/22(水) 02:42:52ID:ZhuFa4Bc
#include <stdio.h>

int main()
{
int a, b;

a = 1;
b = 2;

// 「前から読んだら文がどこで終わるかわからない」としたら、「後ろから読んだとき」
printf(
"%d\n",
b
+ a++
); // ここで終わる文がどこから始まるのか、コンパイラはどう判断するの?
return 0;
}
0838名前は開発中のものです。2010/09/22(水) 02:44:18ID:ZhuFa4Bc
>>836
「なので」の前と痕が全くつながってない
0839名前は開発中のものです。2010/09/22(水) 02:45:02ID:KlyUHZKS
ちなみに=代入演算子は優先順位が低いから、
最初の方に書く必要がある。

a = a +1


=は2列目に書いている
優先順位が低いから
0840名前は開発中のものです。2010/09/22(水) 02:45:54ID:KlyUHZKS
どのプログラムもそうなってるよ。
0841名前は開発中のものです。2010/09/22(水) 02:47:41ID:ZhuFa4Bc
> ちなみに=代入演算子は優先順位が低いから、
> 最初の方に書く必要がある。

その理屈だと、優先順位の低い = 演算子は必ず 優先順位の高い [] より前に書かなきゃいけないってことでいいんだよね!
0842名前は開発中のものです。2010/09/22(水) 02:48:47ID:uXUhUOYT
配列要素に代入出来ないのか
キツイな
0843名前は開発中のものです。2010/09/22(水) 02:48:48ID:h9k+fC0i

a[1] = b[2];
0844名前は開発中のものです。2010/09/22(水) 02:51:27ID:KlyUHZKS
>>835
b= (a+b)+b;

これは、こんな感じに後ろから前に分解して読む

1.;
2.b
3.+ ←コレが3位
4.) ←コレが1位
5.b
6.+ ←コレが2位
7.a
8.( ←1位ここまで
9.= ← コレが4位
10.b ← コレが5位
0845名前は開発中のものです。2010/09/22(水) 02:51:40ID:ZhuFa4Bc
そうか…

今まで

 x * y + 2

とか書いてたけど、これからは優先順位の低い + を前にして

 2 + x * y

って書かなきゃいけないな
0846名前は開発中のものです。2010/09/22(水) 02:52:22ID:uXUhUOYT
優先順位と書く位置は全く関係無い
というか、順序を制限しないための優先順位なんだけど
例えば算数で
1+2×3と
2×3+1が同じになるのは優先順位のおかげ
0847名前は開発中のものです。2010/09/22(水) 02:54:00ID:KlyUHZKS
だ か ら 後ろから読むの(^^
0848名前は開発中のものです。2010/09/22(水) 02:56:27ID:uXUhUOYT
想像以上にバカだった
0849名前は開発中のものです。2010/09/22(水) 02:57:18ID:a9eeuuzq
>>844
もっと詳しく説明よろ
0850名前は開発中のものです。2010/09/22(水) 02:59:01ID:uXUhUOYT
取り合えず>>743がわかりやすいから何度も読め
それでも後ろから読む必要があると思うならもう知らん
0851名前は開発中のものです。2010/09/22(水) 02:59:11ID:jq8AzszG
int a = 1 ;
if ( (a=a+3)>2 || (a=a-5)>0 ){}

この条件文は通る?
この条件文を抜けたあとのaは?
後ろから読んで説明してみて
0852名前は開発中のものです。2010/09/22(水) 03:00:17ID:h9k+fC0i
文ごとに後ろから読むの?
ソース全部後ろから読むの?
0853名前は開発中のものです。2010/09/22(水) 03:01:06ID:UQTbKj7R
>>852
そこは答えたく無いらしいよ?w
0854名前は開発中のものです。2010/09/22(水) 03:01:30ID:KlyUHZKS
>>851
めんどくさいからもう分解しないけど。

if ( (a=a+3)>2 || (a=a-5)>0 ){}

これを脳内で後ろから前に読んでください。

それを俺が書いた順位表で考えて
その順番に計算してください。

この場合、||←(理論演算子)が最後から二番目の順位です。
0855名前は開発中のものです。2010/09/22(水) 03:02:04ID:uXUhUOYT
どっかに演算順序を超わかりやすく書いてくれたレスがあったはず
0856名前は開発中のものです。2010/09/22(水) 03:02:19ID:ZhuFa4Bc
>>847

なにが「だ か ら」なのか全く不明
改めて確認するが、

 ・優先順位の高い [] 演算子は低い = の前に書いてはいけない
 ・どのプログラムもそう ([] が = より前に書かれてるようなプログラムはない)

でいいんだよな?
0857名前は開発中のものです。2010/09/22(水) 03:03:28ID:KlyUHZKS
ソースは1行目から下に向かって読む。
列は、後ろから文章の先頭(座標0)に向かって読む

だが、実行する場合は、
mainから実行
0858名前は開発中のものです。2010/09/22(水) 03:04:48ID:UQTbKj7R
>>857
じゃあ、>>834に答えて
0859名前は開発中のものです。2010/09/22(水) 03:05:45ID:KlyUHZKS
あ。実行する前にグローバル変数とかインクルード読んでるけどね。

それを飛ばしての話です。
0860名前は開発中のものです。2010/09/22(水) 03:06:12ID:h9k+fC0i
=を関数で考えると
int equal(int &a,int b);
見たいになるから左辺の正体は値じゃなくて参照って考えるといいんじゃね?
0861名前は開発中のものです。2010/09/22(水) 03:07:36ID:uXUhUOYT
あった>>476
この説明見た上で後ろから読む必要を説明してくれ
0862名前は開発中のものです。2010/09/22(水) 03:10:03ID:KlyUHZKS
>>845
いや、違う。。

x * y + 2

でもいい。

後ろから分解

1.2
2.+
3.y
4.*
5.x

こう考えて、+と*の順位はどっちが上ですか?

俺のサイトの表を見てください。

*は3位で+は4位です。

なので、その順番で計算する。
0863名前は開発中のものです。2010/09/22(水) 03:10:15ID:uXUhUOYT
前から読むと文末が分からないのに
文末から読めるって発想がスゴイな
0864名前は開発中のものです。2010/09/22(水) 03:11:04ID:ZhuFa4Bc
> ソースは1行目から下に向かって読む。
> 列は、後ろから文章の先頭(座標0)に向かって読む

じゃあ

a = a
*
(b + 10);

はどう読まれるの?
0865名前は開発中のものです。2010/09/22(水) 03:12:45ID:KlyUHZKS
ちなみにこれはコンパイラの理解です。

これらの文章法則をコンパイラは、
機械語に変換して、

そして、ようやく本来のコードになる。

機械語を直接話せるなら、
コンピュータにとって、もっといいコードになる。

アセンブラとか。
0866名前は開発中のものです。2010/09/22(水) 03:13:01ID:uXUhUOYT
>>862
優先順位考えるんだから
前から読んでも問題無いよね
0867名前は開発中のものです。2010/09/22(水) 03:13:07ID:UQTbKj7R
>>859
最初に変数を読んで後は後ろから分解するんだよね?

int a = 1, b = 2 ; a = a+b ; a = 10 ; b = 11 ; a = a+b ;

あれ?
最初の式と後ろの式の結果がいれかわっちゃったw
0868名前は開発中のものです。2010/09/22(水) 03:14:27ID:uXUhUOYT
>>865
前にもレスしたけど
コンパイラがどう読むか

言語仕様としてどの順序で演算するか
は全く関係無い
0869名前は開発中のものです。2010/09/22(水) 03:15:26ID:ZhuFa4Bc
>>862
代入演算子は優先順位が低いから最初の方に書かなければいけないって言ったのはお前じゃん
なのになんで

  優先順位の低い + は優先順位の高い * より前に書かなければならない

にならないの?
0870名前は開発中のものです。2010/09/22(水) 03:16:47ID:ZhuFa4Bc
あと>>864にも答えてね
0871名前は開発中のものです。2010/09/22(水) 03:18:56ID:KlyUHZKS
#define A 1

これを分解

1.1
2.A
3.e
4.n
5.i
6.f
7.e
8.d ←ここまで読んで、ようやく「define」であることを理解
9.# ←ここまで読んでようやく「呼び出すんだね?ラジャー!」

となって、マクロを使う。
0872名前は開発中のものです。2010/09/22(水) 03:20:45ID:KlyUHZKS
ああ。正確には、

1.1
2.空白(スペース)
3.A
4.空白(スペース)
3.e
4.n
5.i
6.f
7.e
8.d ←ここまで読んで、ようやく「define」であることを理解
9.# ←ここまで読んでようやく「呼び出すんだね?ラジャー!」

こうだね?

なので、1はAに格納される
0873名前は開発中のものです。2010/09/22(水) 03:21:52ID:uXUhUOYT
ダメだこいつプリプロセッサもやっぱり理解してない
0874名前は開発中のものです。2010/09/22(水) 03:22:15ID:KlyUHZKS
訂正

1.1
2.空白(スペース)
3.A
4.空白(スペース)
5.e
6.n
7.i
8.f
9.e
10.d ←ここまで読んで、ようやく「define」であることを理解
11.# ←ここまで読んでようやく「呼び出すんだね?ラジャー!」


何度も失礼・・。
0875名前は開発中のものです。2010/09/22(水) 03:23:33ID:a9eeuuzq
>>839をふまえた上でint型配列の変数に値を代入したいときはどうすれば良いか答えてくれない?
0876名前は開発中のものです。2010/09/22(水) 03:24:58ID:ZhuFa4Bc
>>871-872

# で始まる行であることをまず認識しないとプリプロセッサが動けないんだが
0877名前は開発中のものです。2010/09/22(水) 03:26:08ID:ZhuFa4Bc
>>875
その指摘は見えないようになってるらしい
0878名前は開発中のものです。2010/09/22(水) 03:26:19ID:8Kfyr4O9
私の高校の頃の数学教師の言葉
「数学の式や関数って、プログラムで使う式や関数とは別物だから混同しないほうがいいよw
同じなのは見た目だけw」
0879名前は開発中のものです。2010/09/22(水) 03:26:49ID:uXUhUOYT
てか取り合えず>>476を読めよ
まさか読んだ上で言ってるの?
0880名前は開発中のものです。2010/09/22(水) 03:29:56ID:8Kfyr4O9
当時の自分は「は? 数学でもC++でも別段困ってないんだけど」ってスルーしてたけど、
カズキくんみたいに自分の知ってることだけでC++を理解しようとすると勘違いするから
前もって言ってくれてたのね
0881名前は開発中のものです。2010/09/22(水) 03:31:18ID:ZhuFa4Bc
字句解析とか構文解析なんて言葉は見たこともないんだろうな
ごく簡単なものでいいから一度でもパーサを書いてみてから語って欲しいものだ
0882名前は開発中のものです。2010/09/22(水) 03:33:46ID:KlyUHZKS
では、これにて後ろから前は終了!!


じゃあ、寝るわ。
0883名前は開発中のものです。2010/09/22(水) 03:34:10ID:jq8AzszG
#define A(a) {a=a+1;a=2;a=a+3;}

はい、説明して!
0884名前は開発中のものです。2010/09/22(水) 03:34:38ID:uXUhUOYT
説明出来なくなると逃げる
いつも通りだね
0885名前は開発中のものです。2010/09/22(水) 03:35:15ID:ZhuFa4Bc
都合の悪い質問は全て無視して終了宣言か
0886名前は開発中のものです。2010/09/22(水) 03:35:39ID:h9k+fC0i
#define TEN 10

1.# ←プリプロセスっすね 準備するっす
2.d
3.e
4.f
5.i
6.n
7.e 
8. ←defineっすね?ぱねぇww使いすぎ
9.T ←マクロ名っすか "T"
10,E ←Eっすね "TE"
11. N ← N "TEN"次は?
12.  ←途切れたんで"TEN"でいいんすね
13. 1 ←代入は"1"・・・と
14.0 ←0、後は? "10"
15.\n ←おk、"TEN"って識別子を"10"に変えるんすね、覚えとくっす

僕のdefineちゃんはこんな感じ
0887名前は開発中のものです。2010/09/22(水) 03:37:02ID:uXUhUOYT
>>886
どっちかっていうとプリプロセッサちゃん
0888名前は開発中のものです。2010/09/22(水) 03:38:46ID:KlyUHZKS
>>883
これの場合は、;を書いてるから
そこで一区切りになって考えます。

たしか;はそういう意味だったはず。

つまり、こうだね?

#define A(a) {a=a+1;a=2;a=a+3;}

{a=a+1;a=2;a=a+3;}
 ↑
この部分だけ考えるね?

a=a+1;
a=2;
a=a+3;


中身をこんな風に分解。

これをそれぞれ後ろから読む
0889名前は開発中のものです。2010/09/22(水) 03:39:09ID:h7AWls07
このスレも後ろから読むと理解できます。
一番後ろはきっと5000スレくらいなので気長に待ってください。
0890名前は開発中のものです。2010/09/22(水) 03:40:15ID:ZhuFa4Bc
起きてからでいいから

#include <stdio.h>
int main(){ int a = 3; int b = 2; a = a * (b + 10); printf("%d\n", a); return 0; }

↑のプログラムがどう読まれるか解説してね。あと↓のも

#include <stdio.h>
int
main(){
int
a
=
3;
int
b
=
2;
a
=
a
*
(b
+
10);
printf("%d\n",
a);
return
0;
}
0891名前は開発中のものです。2010/09/22(水) 03:40:53ID:KlyUHZKS
正確にはこうか。

1.a=a+3;
2.a=2;
3.a=a+1;

順番を間違った(^^;
0892名前は開発中のものです。2010/09/22(水) 03:42:46ID:ZhuFa4Bc
>>888
まちがい。プリプロセッサは ; を特別扱いしたりしない
0893名前は開発中のものです。2010/09/22(水) 03:43:58ID:KlyUHZKS
>>890
絶対に嫌w

わざと読みにくく書いて困らせようとしているのが、
その文章から読み取れるから。

自分で考えろ。
0894名前は開発中のものです。2010/09/22(水) 03:45:00ID:uXUhUOYT
読めないのか
0895名前は開発中のものです。2010/09/22(水) 03:45:00ID:h9k+fC0i
>>891
ならa=0で入れたらaは3になるんだね?
0896名前は開発中のものです。2010/09/22(水) 03:46:02ID:9XaaDgHA
>>891
じゃあ、

int a = 1 ;
A(a)

のあとのaは3ですね
マジパネェっす
0897名前は開発中のものです。2010/09/22(水) 03:46:16ID:ZhuFa4Bc
>>890の二つのプログラムが同じものだってことは理解できる?
0898名前は開発中のものです。2010/09/22(水) 03:46:46ID:uXUhUOYT
しかしこんなのが30代なんだよな
周りの人が可哀想で泣けて来るわ
0899名前は開発中のものです。2010/09/22(水) 03:48:35ID:uXUhUOYT
「当然知ってたし
そんなの初歩だよ」
とか言い出すと予想
0900名前は開発中のものです。2010/09/22(水) 03:48:41ID:a9eeuuzq
とりあえず配列への代入について答えてもらおうか
0901名前は開発中のものです。2010/09/22(水) 03:49:44ID:KlyUHZKS
>>896
違う。

初期化してるから毎回変わる。


1.a=a+1;
2.a=2;
3.a=a+3;

1.は1
2.は2
3.は何かな?

これぐらいは解るよね?
0902名前は開発中のものです。2010/09/22(水) 03:50:34ID:uXUhUOYT
えっ
0903名前は開発中のものです。2010/09/22(水) 03:52:42ID:UQTbKj7R
>>901
前から読んでるじゃんw
>>891といってることが違いますよ?
0904名前は開発中のものです。2010/09/22(水) 03:54:46ID:KlyUHZKS
あれ?

なんか、ややこしくなったけど。

とにかく、

#define A(a) {a=a+1;a=2;a=a+3;}


この場合は、後ろの}←から読む。

改行しようが何しようが一緒!


{ }で囲まれたブロックを一つの関数として考えていきます。
0905名前は開発中のものです。2010/09/22(水) 03:55:49ID:ZhuFa4Bc
>>893

俺は別に考える必要はないよ。この二つのプログラムがコンパイラでどう処理されるか
は (もちろん概要だが) 知ってるから。

キミはその「後ろから前」説を

  「コンパイラはプログラムを後ろから読むんだ!だって前から読んだらどこで終わったらいいかわからないじゃないか!」

ってことを根拠にしてたんだよね。

でも「;」が区切りになることを認めちゃったらその根拠が崩れちゃうんじゃないの?
0906名前は開発中のものです。2010/09/22(水) 03:57:03ID:KlyUHZKS
ちなみに{ }の中は、→こっち方向で読むので、

a=a+1

から読む。

失礼w

上のはミスです
0907名前は開発中のものです。2010/09/22(水) 03:57:15ID:h9k+fC0i
>>904
とにかくじゃないよおおおおおお
>>891
の順番なら3が出るはずなのに
実際は5が出てるんだよおおおおおおおお

期待した値と違う結果が出てコンパイラがエラーや警告で教えてくれないんだよ!??
最悪のエラーじゃないか!!
0908名前は開発中のものです。2010/09/22(水) 03:58:02ID:UQTbKj7R
>>904
分かりました{}をとりましょう

#define A(a)a=a+1;a=2;a=a+3;

エラーは出ませんよ?
改行したら出るけどなw
0909名前は開発中のものです。2010/09/22(水) 03:58:34ID:KlyUHZKS
>>891は間違えです。
失礼しました。
0910名前は開発中のものです。2010/09/22(水) 03:59:19ID:uXUhUOYT
>>906
なぜ{}の中だけ前から処理するの?
普通に考えて全部前から処理していってなにが問題なの?
0911名前は開発中のものです。2010/09/22(水) 04:00:26ID:uXUhUOYT
てか、プリプロセッサとコンパイラ
コンパイルと、実行
は分けて考えろよ
0912名前は開発中のものです。2010/09/22(水) 04:01:34ID:uXUhUOYT
もっと単純に
プリプロセスと、コンパイルと、実行
で良いか
0913名前は開発中のものです。2010/09/22(水) 04:02:54ID:ZhuFa4Bc
> { }で囲まれたブロックを一つの関数として考えていきます。

ふーん、じゃ、とっておき

#include <stdio.h>

#define BEGIN {
#define END ;}
#define FOO(x, y) {int a = x int b = y
#define BAR(x) x; }

int main()
BEGIN
FOO(3;, 2;)
a = a * (b + 10);
BAR(printf("%d\n", a))
END

これでもちゃんと動くれっきとしたCプログラムだけど、これはどんなふうに読まれる?
0914名前は開発中のものです。2010/09/22(水) 04:04:16ID:KlyUHZKS
訂正

#define A(a) {a=a+1;a=2;a=a+3;}


これを分解

最後の}から読み始めて、

a=a+1;
a=2;
a=a+3;

上記のようにまず、三つに分解する。

これを、上から順番に、実際は左から右に読んで、
最終地点の;をスタートにして、前に向かって読む。

終わったら次の行を読む。

この場合、{ }内は、
{ ←これが0地点
0915名前は開発中のものです。2010/09/22(水) 04:06:08ID:9XaaDgHA
>>914
>>908
0916名前は開発中のものです。2010/09/22(水) 04:06:32ID:ZhuFa4Bc
>>914
なんでそんなややこしいことしなきゃならんの? 前から読めばいいのに

それにプリプロセスとコンパイルは違うって皆が言ってるの、耳に入らないの?
0917名前は開発中のものです。2010/09/22(水) 04:07:40ID:KlyUHZKS
>>910
だから向きだよ。
演算子は、それぞれの考える向きが決まっている。

検索すれば出てくると思うけど。
0918名前は開発中のものです。2010/09/22(水) 04:08:17ID:h9k+fC0i
>>915
それも

最後から読み始めて、

a=a+1;
a=2;
a=a+3;

のように分解する
で切り抜けられる気がしてきた
0919名前は開発中のものです。2010/09/22(水) 04:09:06ID:roNSNMqe
int a[10];
a[0]=0;
この簡単な式の説明して見てよ
0920名前は開発中のものです。2010/09/22(水) 04:10:13ID:ZhuFa4Bc
>>918

#define A(a, x) a=a+1 x a=2 x a=a+3 x

A(a, ;) で展開すればおk
レス数が900を超えています。1000を超えると表示できなくなるよ。