Kazukiの同人3DRPG制作【第二話】
■ このスレッドは過去ログ倉庫に格納されています
0001Kazuki
2010/09/19(日) 04:46:22ID:6P+qj1XKttp://www.kazuki-sendo.com/game/
発展途上中の素人Kazukiを中心として
DirectX9による3DRPG制作に挑戦します。
開発言語は、C++です。
長く苦しい戦いになると思われますが、
同人ゲーム制作の限界への挑戦が、当企画のテーマでもあります。
0740名前は開発中のものです。
2010/09/21(火) 23:25:43ID:yiX2zEPh0741名前は開発中のものです。
2010/09/21(火) 23:26:34ID:osQ4NIxS0742名前は開発中のものです。
2010/09/21(火) 23:27:06ID:A3rTjQjP応援してる
0743名前は開発中のものです。
2010/09/21(火) 23:27:20ID:IPqEJBoHb=A+bという式の中には演算子が2つ(=,+)がある
この二つの演算子の優先順位をみると+のほうが高い
よって演算は(+の評価が先に行われ、A+bを計算し2という結果を得る
その後、=が評価されb=2が実行され、bに代入される
switchの評価は、()内の演算がすべて終わった後に評価されるので、
演算の結果残るのは、bであり、その中身2が評価されることになる
これは1+2*3の計算をする場合と同じ、
先に2*3を計算し6を得た後に、1+6を計算する
結果7という答えを得る。
本文中の(b=A+b)->(1=1+1)という解釈されるなら、
1+2*3も+が先に評価されて9という答えが返ることになるが
あと質問したいんだが、
>>1のなかで「前から後ろ」に計算する場合
A=2,b=1のとき、
b=A+bの評価はどうなるのか答えて欲しい
0744名前は開発中のものです。
2010/09/21(火) 23:29:05ID:K3ExNE1u疲れたので、あとで確認しておくよ。
>>733
>switch (b=A+b)ってなんぞwwww
そんなこと言われてもなーw(^^
スイッチを使ってるだけです。
0745名前は開発中のものです。
2010/09/21(火) 23:29:20ID:f2Sfy3iWそんなところだろうな
で、問い詰めると例によって
・switch(b=A+b) も switch(A+b) も意味は同じ、どっちでもいい
・switch(A+b) ではなく switch(b=A+b) としたことに理由なんてない。そうしたかっただけ
とかイカれたことを言うんだろうな
0746名前は開発中のものです。
2010/09/21(火) 23:31:24ID:K3ExNE1u最後の表が一番重要かな?
0747名前は開発中のものです。
2010/09/21(火) 23:32:02ID:f2Sfy3iWスイッチを使うのに意味もなく代入してるのはなぜ?って聞かれてるんだって、わからない…んだろうな。
0748名前は開発中のものです。
2010/09/21(火) 23:32:13ID:osQ4NIxS確認=ググる
switch文くらいでエラソーにしてんじゃねーよ
0749名前は開発中のものです。
2010/09/21(火) 23:32:31ID:aqn5gOVm単項演算子-をマイナスとか書くなよw
それで一番重要とかお前が一番判ってないっつーの
0750名前は開発中のものです。
2010/09/21(火) 23:32:46ID:K3ExNE1uうん、その通りだよ。
そういう風に解説したいから、
そう解説しているだけです。
意味などない。
0751名前は開発中のものです。
2010/09/21(火) 23:33:26ID:oKFd/EvV0752名前は開発中のものです。
2010/09/21(火) 23:37:03ID:aek2RRfH0753名前は開発中のものです。
2010/09/21(火) 23:37:24ID:osQ4NIxSkazukiは理論ってことにしたいらしいな
またどうせ「そんなことはどうでもいいのです(^^そんなこと知らなくても(ry」とか言い出すぞ
0754名前は開発中のものです。
2010/09/21(火) 23:45:26ID:K3ExNE1uしまったw
急いで作ったから間違えたwww
それぐらい見逃してください。
あとで直しておきます。(^^
ご指摘ありがとう。
ふう。。ところで俺は疲れた。
ここ連日、ハイペースで公式サイトを更新してきましたからね。(^^;
なので、ここでちょっとペースダウンさせよう。
仕事も溜まってるし、
そっちも片付けることにします。
0755名前は開発中のものです。
2010/09/21(火) 23:45:25ID:X+nLymxoあいかわらずマクロの定義が実行時メモリに確保されているかのような図。
bをグローバル変数にしていること。
bに意味もなく1の初期値を与えていること。
なぜわざわざ switch(A+b)ではなく、switch(b=A+b)としたのか?
代入に意味を持たせたいなら、
b=A+b;
switch(b) {..
とすればいいのではないのか?
#define A 1
int b = 1;
:
switch(2 * (b=A+b) + (b-4)) {
:
}
の場合はどういう順で解釈するのか?
switch文の後のbの値が何かわかる?
0756名前は開発中のものです。
2010/09/21(火) 23:46:33ID:LXJVfUPR0757名前は開発中のものです。
2010/09/21(火) 23:49:20ID:K3ExNE1uそれでもいいけど。
俺は、スイッチには「式を入れることが出来る」ということを
一番、言いたかったのです。
外で計算するんじゃなくて、
そこで計算させる。
そうすれば、ソースが短くなっていいでしょ?
そんでもって、その「式の答え」と表現すれば
解りやすいじゃないか。
多分、こんな解説してるの俺だけだと思うけど、
こういうのが、オリジナルです。
俺は教科書を読んで勉強して、
そこに載っていることだけを学んでいるのではない。
「自分で研究」して学んでいます。
なので、あんな解説になりました。
0758名前は開発中のものです。
2010/09/21(火) 23:49:59ID:f2Sfy3iW> そう解説しているだけです。
不必要な代入をするのは馬鹿。
代入することで、以後の状態が変化する (副作用があるという)。つまり、それ以前と
それ以後で、同じ処理をしても結果が異なる場合が生じる。
そういう副作用のある処理を不必要にするべきではない。
代入の必要がある場合でも
b=A+b;
switch(b) {…
と書くべき。(そこで状態が変化していることを switch 文の中に埋め込んで見えにくくするべきでない)
まして「初心者むけの解説」で不必要なことを書く事で、例えば
switchの式には代入文を書く
みたいな勘違いを生むことがわからないのか?お前みたいな。
0759名前は開発中のものです。
2010/09/21(火) 23:51:28ID:jmqnUjZoあんたを理解するために>>743の最後の質問だけ答えてくれ
0760名前は開発中のものです。
2010/09/21(火) 23:52:55ID:nG5eaoRnって風に思わないのがKazukiクオリティ
てか、毎回解説の焦点が定まってないというか、恐ろしく初心者を混乱させるような物だな
初心者が張りぼての知識を教えるときによくなる状態
0761名前は開発中のものです。
2010/09/21(火) 23:53:20ID:osQ4NIxS無意味な代入して文字数増やして何言ってるんだ
行数減らしたきゃムリヤリ一行にでも書いたらいいだろ…
0762名前は開発中のものです。
2010/09/21(火) 23:54:07ID:K3ExNE1u>bに意味もなく1の初期値を与えていること。
だから、そうやって解説したいからです!って言ってんだろうがぁぁぁおーーん!!
bをね?1にすることで、
Aもbも1になりました。
その状態で計算式を考えて見ましょう。
前から後ろに向かって考えれば、
先頭のbに1が入ってしまいます。
それは間違いなんだよ?ということを解説したいから、
ああいう解説にしました。
0763名前は開発中のものです。
2010/09/21(火) 23:54:40ID:aqn5gOVmそれが初心者向けの親切だとおもうぜ。
自分の間違いにそれっぽい言い訳を付けて誤魔化すのも大変だろ。
素直に受け入れようぜ。
0764名前は開発中のものです。
2010/09/21(火) 23:56:58ID:nG5eaoRn前から後ろに考えてもbに2が代入されるから
>>743
見ても分からないのか??
0765名前は開発中のものです。
2010/09/21(火) 23:57:31ID:f2Sfy3iW> 一番、言いたかったのです。
それなら switch(A + b) で十分だろ。代入の必要はないのだから。
「初心者に親切に」なら
(1) switch(b) で、b の値によって処理が変わることを示す
(2) switch(A + b) の例を示して、switch() には式を書く事も出来ることを示す
(3) (あくまでもおまけとして) 「C言語では代入も式だから(値を持つから)」 代入式を書くことも出来ることを示す
その際には、
これはあくまでも説明のための例で、意味のない代入はすべきでないこと
も説明すべきだな
0766名前は開発中のものです。
2010/09/21(火) 23:58:00ID:K3ExNE1u答えが2になったのでbが表示されました。
と言った方が解りやすいよ。
0767名前は開発中のものです。
2010/09/21(火) 23:58:56ID:aqn5gOVm>前から後ろに向かって考えれば、
>先頭のbに1が入ってしまいます。
何言ってるんだよw
=と==の区別ついてねぇだろこいつ。
代入演算子をちゃんと理解しろよ。
0768名前は開発中のものです。
2010/09/22(水) 00:00:44ID:f2Sfy3iW> 先頭のbに1が入ってしまいます。
それは単に代入の意味がわかってないからで、「前から後ろに考えるから」ではない。
0769名前は開発中のものです。
2010/09/22(水) 00:01:35ID:K3ExNE1u==は、比較演算子
=は、代入演算子
ってハッキリ言ってるでしょ?
そんな人に向かって、
区別ついてないとか、よく言えたね?
まあ、いいや。
今日はいい仕事したよ。
いつも解説をアップした後は、
スッキリした気分になる。(^^
ちょっと、スナックでも行ってくるか(^^
今でもやってるかな?
0770名前は開発中のものです。
2010/09/22(水) 00:03:27ID:fNppjQx5>>619
自分と付き合って運用屋さんはインフラの手配からして、イレギュラーなトラフィック上昇以外では
ダウンタイムを保証したサービスを提供しているようなところ(その代わり大規模なところはサポートしてないけど)なので、
多くを求めすぎているのかも。
大規模サービスを提供しているDCのオペレータはそんなもんなのかもね?
>>622 K3ExNE1u
それに比べて何お前?
>社外秘情報だろ・・それ・・。
>そんな細かいことを書いちゃいけない。
とか。
俺は開発屋だが、どう考えてもちょっと考えたら出てくる抽象的な内容だろ?
正直開発屋から見た運用屋っていうのは、システムの安定運用のために、
本番環境については些細なバージョンアップも躊躇うような人種だぞ?
自分で挙げた例で言えば、データ取得の自動化も手で打ってるのをスクリプトにしただけでも
問題ないか開発に確認してくるような奴らだ。
彼らのノウハウは、より具体的で長期運用している現場じゃないと
知ることができないようなイレギュラーな現象への経験や生の統計データにある。
それを一般的に表現しただけで社外秘とか舐めてるとしか思えない。
IDを追いかける限り、まるで自演してるようにしか見えないのだが、大丈夫?
0771770
2010/09/22(水) 00:04:27ID:fNppjQx50772名前は開発中のものです。
2010/09/22(水) 00:04:30ID:go2dVt0W名前だけ知ってたって意味ないよ。
どういう役割なのか理解してないようにしかみえないからな。
0773名前は開発中のものです。
2010/09/22(水) 00:04:38ID:uXUhUOYT優先順位、結合規則理解できてないんだろうな
0774名前は開発中のものです。
2010/09/22(水) 00:06:06ID:ZhuFa4Bcならなおさら意味不明な代入なんてすべきじゃないな
A が 0 の場合
A+b の値が 1 なので "a" が表示されました
A が 1 の場合
A+b の値が 2 なので "b" が表示されました
でいいじゃないか。
0775名前は開発中のものです。
2010/09/22(水) 00:08:09ID:go2dVt0W0776名前は開発中のものです。
2010/09/22(水) 00:10:21ID:ZhuFa4Bc代入演算子の働きが
「左側の式が示す場所 (左辺値)」に右側の式の値 (右辺値) を格納すること
(かつ、演算の結果の値は右辺値になる)
だと知ってれば「前から後ろ」だろうが「後ろから前」だろうが結果は同じだろ。だから
代入演算子を理解してないと言われる。
0777名前は開発中のものです。
2010/09/22(水) 00:11:53ID:KlyUHZKSIDなんて気にすんな。おぼっちゃまw
俺は社会の仕組みをだな、解りやすく伝えて、
それ以上、行くととんでもない情報を公開してそうになったので、
流れを変えるために、
「それ以上言うな」的なことを言って、
彼に「目を覚まして!ここは掲示板だぞ!ネットだぞ!」ということを気づかせるために
ああいうことを言ったの。
多分、彼もそれに気づいたはずだと思う。
業務の内容とかを喫茶店で話すことも実はダメです。
なんて言ったかな・・・。
そういう決まりになってるのよ。
この業界の人は、特にそういうことには気をつける必要がある。
うっかり発言は、とんでもない問題に発展する。
0778名前は開発中のものです。
2010/09/22(水) 00:11:54ID:uXUhUOYTa=bをa=a+b
ってしてることといい
今回のswitch文で無駄な代入してることといい
代入辺りで致命的な勘違いをしてる気がする
0779名前は開発中のものです。
2010/09/22(水) 00:12:16ID:go2dVt0W0780名前は開発中のものです。
2010/09/22(水) 00:14:18ID:uXUhUOYT0781名前は開発中のものです。
2010/09/22(水) 00:14:19ID:KlyUHZKS「情報漏えい」だw
では、ちょっと出掛けてくる。
0782名前は開発中のものです。
2010/09/22(水) 00:14:52ID:WX+EEY4l0783名前は開発中のものです。
2010/09/22(水) 00:14:56ID:a9eeuuzqまぁ>>762の答えから想像すると
A=2,b=1で(b=A+b)は(1=2+1)っていう評価になるんだろうな
という言うことで、Kazukiくんの「後ろから前」っていう解釈がわかった気がするぜ
たぶん式の評価のときに変数も一緒に置き換えてるんだろうな、
・前から
b=A+b -> 1=A+b ->=は優先順位が低いので飛ばす-> 1=2+b ->
-> +評価 -> 1= (2+1) -> 1 = 3 -> =評価 →
-> リテラルなので代入されない -> 結果1
・後ろから
b=A+b -> b=A+1 -> +評価 -> b=(2+1) -> b = 3 -> =評価 -> bに3が代入される
たぶんこんな理解してんじゃね?
0784名前は開発中のものです。
2010/09/22(水) 00:16:47ID:go2dVt0Wというより最初にメモリ云々の解説してる感じからして
「メモリに格納」は「=を使う」
「メモリに格納されていないとプログラム上で利用できない」
って解釈で無理矢理代入してるんだと俺は思ってるんだがw
0785名前は開発中のものです。
2010/09/22(水) 00:16:52ID:ZhuFa4Bcこの図見てなんで「後ろから前」に拘るのかなんとなくわかったわ
A が 1 で b も 1 のとき
b = A+b
の中の b, A, b を頭から b→1 A→1 b→1 と置き換えてくと
1=A+b
1=1+b
1=1+1
になっちゃって等号が成り立たない。後ろからなら
b=A+1
b=1+1
でこの段階でまだ左辺の b は確定しない(?)から b→1 とするのは止めて等号が成り立つように
bに2を入れてやれば
2=1+1
と等号が成り立って、かつ b に 2 が入る
そんなことなんだろうな…
0786名前は開発中のものです。
2010/09/22(水) 00:20:05ID:ZhuFa4Bcやっぱり中学生にしか見えない
0787名前は開発中のものです。
2010/09/22(水) 00:20:34ID:KlyUHZKSありがとう!!(涙
やっと、俺の言ってること解ってくれる人がいた!!
ヒデキ感激・・じゃなくてw
Kazuki感激!!
うえwwうえwwwww
でも、俺が言いたかったのは、
そういうことっす(^^
皆さんも、そんなに難しく考えないでください。
0788名前は開発中のものです。
2010/09/22(水) 00:22:16ID:uXUhUOYTswitch文の説明みると評価式と書いてあるぞ
式なんだー
式といえば(数学を思い出して)1+1=2の形だな
でも"a+b=b"これじゃプログラムでは上手くいかない><
お、逆にすれば上手く動くぞ!
そうかプログラムでは後ろから前に計算するんだ!
がんばって思考を考えてみた
0789名前は開発中のものです。
2010/09/22(水) 00:30:22ID:KlyUHZKSなにそれww
0790名前は開発中のものです。
2010/09/22(水) 00:30:46ID:ZhuFa4Bc礼を言われる筋合いはない。お前がどう考えてるかわかったというだけで、
それを肯定する気は微塵もないのだから。
0791名前は開発中のものです。
2010/09/22(水) 00:30:54ID:rOzISJN3完全に頭悪いな
0792名前は開発中のものです。
2010/09/22(水) 00:31:21ID:uXUhUOYTお前の解説はこうでもしないと理解出来ないんだわ
0793名前は開発中のものです。
2010/09/22(水) 00:31:44ID:ULlTcfuE等号記号だとみてんじゃねーかw
0794名前は開発中のものです。
2010/09/22(水) 00:32:47ID:ZhuFa4Bcお前に笑う資格はない。>>788はもちろんおかしい(*1)
だがお前の考えも同程度におかしい
(*1) もちろん>>788はわざとおかしいことを書いているのだろうけど
0795名前は開発中のものです。
2010/09/22(水) 00:37:10ID:9m8CqZhaC言語の構文が算数の式と結びついて
離れないみたいだな。
0796名前は開発中のものです。
2010/09/22(水) 00:37:32ID:a9eeuuzqが正解か
じゃー
a=1,b=2,c=3で
a= (b= a+c) + a + (c=a+b)
はどうなるんだろうな
「後ろから」だと8になって、
「前から」だと10になるぜ
そして実際計算させると10だぜ
この問題をどう解釈する?
0797名前は開発中のものです。
2010/09/22(水) 00:37:46ID:ZhuFa4Bcもっとも、>>785 の説明(が本当にkazukiの考えと同じだとして)だと置き換えは実行時だからやっぱり正しくはないか
0798名前は開発中のものです。
2010/09/22(水) 00:38:19ID:uXUhUOYT>>1の考えを想像してみたんよ
0799名前は開発中のものです。
2010/09/22(水) 00:44:17ID:KlyUHZKSおかしかったら笑ってもいいんだよ?(^^
うはははは!www
こんな俺みたいに。
てか、笑え。
お前、笑え。
0800名前は開発中のものです。
2010/09/22(水) 00:44:53ID:rOzISJN3嘲笑ならみんなしてるよ
0801名前は開発中のものです。
2010/09/22(水) 00:47:23ID:ZhuFa4Bcだってことを知らずにきたのかな。よくわからんけど
>>799
だいぶ笑わせてもらったけど、ここまで来るとむしろ笑えない
0802名前は開発中のものです。
2010/09/22(水) 01:02:48ID:MuuXCIIp0803名前は開発中のものです。
2010/09/22(水) 01:04:30ID:16KXMzSp0804名前は開発中のものです。
2010/09/22(水) 01:13:07ID:uXUhUOYTてか、釣りで何ヶ月(最初は動画上げてるだけだったから3ヶ月ぐらいか?)もバカ演じれないよ普通の人なら
0805名前は開発中のものです。
2010/09/22(水) 01:24:25ID:0duhZDGS精神病かもしれない
そうでなければ、
「ボケ老人」だろう、どこの家庭にも居る。
戦後の混乱期に小中学校であまり学んでない。
老人特有の頑固さで協調性が無い、
年長になると見栄張りで、頭を下げて青年達に聞くことが出来ない。
この年代は生き抜くための根性だけはある。
独学で学んで、実験だけで答えを導き出す、かなり時間を使ってるはず。
このような老人は敬遠されて、いっしょに遊んでくれる友が居ない。
だから、若い人と会話できる事が楽しくてしょうがない。
だから、君達が遊んであげるととても喜ばれる。
0806名前は開発中のものです。
2010/09/22(水) 01:38:38ID:N6b8LlOZ普段自分が使わないような文法が見られて面白いなぁ
0807名前は開発中のものです。
2010/09/22(水) 01:49:08ID:K8CkPXm6a += 3;
とか
struct Foo {};
Foo* foo = new Foo;
はどう理解しているのか気になる。
0808名前は開発中のものです。
2010/09/22(水) 01:51:00ID:KlyUHZKSんじゃ解ったよ。
「右から左=後ろから前」の超解説を今からやります。
文章書くからちょっと待っててね。
多分、超上級者向けだと思う。
0809名前は開発中のものです。
2010/09/22(水) 01:53:46ID:uXUhUOYT超上級者でもむりだわ
0810名前は開発中のものです。
2010/09/22(水) 01:56:38ID:ZhuFa4Bcそんな無駄な努力止めて、まずは今の解説ページを全削除するべき。
0811名前は開発中のものです。
2010/09/22(水) 01:59:38ID:KlyUHZKS人間が読んで理解できる文法です。
つまり、コンパイラが読める文法のことです。
C言語のコードをそのままコンピュータに渡して、
「これ読んで!」って言っても、
コンピュータは読めません。
CPU「ゴメンなさい・・。泣いてもいいですか?」
となるww
そして、このコンパイラはソースを読むとき、
全ての文字を一文字単位で考えた時、
文章の最後から前に向かって読むのだ。
10進数の7を、2進数にすると「0111」になる。
そして、2進数の最小単位がビットです。
コンピュータは、ビットという小さな器の集合体です。
[ ]←これをビットとする。
10進数の7を二進数にすると[0][1][1][1]←こんな感じに、
各ビットの器に放り込みます。
正確には各器の電圧を変化させています。
つづく
0812名前は開発中のものです。
2010/09/22(水) 02:01:16ID:ZhuFa4Bcせめて日本語で書け
0813名前は開発中のものです。
2010/09/22(水) 02:04:13ID:KlyUHZKS1.[0][1][1][1]
こんな風に一発で変換するのは無理。
なぜなら、コンピュータは一つずつ順番に動いているから。
正しくは、
1.[*][*][*][1]
2.[*][*][1][1]
3.[*][1][1][1]
4.[0][0][0][1]
↑
こんな風に後ろから前に向かって
各ビットの器の電圧を変化させて、
10進数を2進数に変換する。
このように考えた時、
コンピュータは「後ろから前に向かって読んでいる」で考えれば、
すべてのツジツマが合う。
つづく
0814名前は開発中のものです。
2010/09/22(水) 02:06:06ID:a9eeuuzq論理回路勉強して来い
0815名前は開発中のものです。
2010/09/22(水) 02:08:42ID:KlyUHZKS↑
これをコンパイラが読むときは、
1.;
2.0
3.=
4.a
5.t
6.n
7.i
↑
こんな感じに文章の後ろから読んでいる。
どうして、後ろから読むのかと言うと、
前から読むと文章の最後がどこなのか解らないから。
エクセルのセルを思い浮かべてほしい。。
0 1 2 3 4
1
2
3
4
↑
こうだよね?
座標、0、0が終了地点です。
このように考えれば、解るよね?
0816名前は開発中のものです。
2010/09/22(水) 02:10:08ID:KlyUHZKS0817名前は開発中のものです。
2010/09/22(水) 02:13:17ID:16KXMzSp0818名前は開発中のものです。
2010/09/22(水) 02:14:39ID:KlyUHZKS1.[*][*][*][1]
2.[*][*][1][1]
3.[*][1][1][1]
4.[0][1][1][1]
以上!
0819名前は開発中のものです。
2010/09/22(水) 02:15:35ID:a9eeuuzqCPUの話ですか?
0820名前は開発中のものです。
2010/09/22(水) 02:15:50ID:9XaaDgHA>どうして、後ろから読むのかと言うと、
>前から読むと文章の最後がどこなのか解らないから。
ここがダウト
なんのために 「;」を付けると思ってるんだよw
0821名前は開発中のものです。
2010/09/22(水) 02:21:32ID:roNSNMqe0822名前は開発中のものです。
2010/09/22(水) 02:21:56ID:KlyUHZKS;は正確には、EOP?だったかな?
ちょっと忘れた。
とにかく、何かの意味なんだよ。
でも、
#define a 0
↑
こんな風に最後に;を入れない場合もある。
;が文章の終了という意味なら、
これを証明することが出来なくなる。
なので、文章の先頭がゴール地点で
座標0に来ると次の行を読むと考えればいい。
なので、後ろから前に向かって読むのだろう。
0823名前は開発中のものです。
2010/09/22(水) 02:27:54ID:ZhuFa4Bcビットレベルで下位から計算される(そういう場合も当然ある)ことと、ソースを読む方向が
なんで同レベルで語れるんだ。
つか、プリプロセスの話とコンパイル時の話と実行時の話が一緒くただよな
0824名前は開発中のものです。
2010/09/22(水) 02:27:56ID:uXUhUOYTいや、俺も読んだ事無いけど普通にソースの先頭から読み込んでるだろうし
インタプリタじゃ無いんだから読み込み順に処理するわけでも無いし
てかファイルの終端が分からなかったら終端から読むなんで事出来ないっていう
0825名前は開発中のものです。
2010/09/22(水) 02:28:54ID:KlyUHZKSint b = 1;
b=A+b;
↑
この式だけを後ろから分解
1.;
2.b ←ここには1が入る
3.+
4.A
5.=
6.b ←ここには2が入る
各演算子は、それぞれの向きで考える。
+は、左から右
=は、右から左
これで俺が言いたいこと解った?
0826名前は開発中のものです。
2010/09/22(水) 02:30:43ID:ZhuFa4Bc> ↑
> こんな風に最後に;を入れない場合もある。
そりゃ、それを処理するのはプリプロセッサでコンパイラじゃないからな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:uXUhUOYT0830名前は開発中のものです。
2010/09/22(水) 02:38:38ID:KlyUHZKS↑
これを後ろから読んで分解
1.;
2.) ←関数呼び出しを意味する
3.b
4.+
5.A
6.( ←関数終了を意味する
7.+
8.b
9.=
10.b
このように考えれば、
各演算子の優先順位もキレイに説明出来る。
0831名前は開発中のものです。
2010/09/22(水) 02:39:39ID:h9k+fC0i{
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:uXUhUOYT0834名前は開発中のものです。
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あとb= (a+b)+b;はどう処理するん?
0836名前は開発中のものです。
2010/09/22(水) 02:42:19ID:KlyUHZKSint a[2]
↑こう書くよね?
これを後ろから分解
1.]
2.2
3.[
4.a
5.t
6.n
7.i
なので、[ ]←これは順位が1位なのだよ
0837名前は開発中のものです。
2010/09/22(水) 02:42:52ID:ZhuFa4Bcint main()
{
int a, b;
a = 1;
b = 2;
// 「前から読んだら文がどこで終わるかわからない」としたら、「後ろから読んだとき」
printf(
"%d\n",
b
+ a++
); // ここで終わる文がどこから始まるのか、コンパイラはどう判断するの?
return 0;
}
0838名前は開発中のものです。
2010/09/22(水) 02:44:18ID:ZhuFa4Bc「なので」の前と痕が全くつながってない
0839名前は開発中のものです。
2010/09/22(水) 02:45:02ID:KlyUHZKS最初の方に書く必要がある。
a = a +1
↑
=は2列目に書いている
優先順位が低いから
■ このスレッドは過去ログ倉庫に格納されています