1 :
Kazuki :
2010/09/19(日) 04:46:22 ID:6P+qj1XK Kazukiの同人3DRPG制作 公式サイト
ttp://www.kazuki-sendo.com/game/ 発展途上中の素人Kazukiを中心として
DirectX9による3DRPG制作に挑戦します。
開発言語は、C++です。
長く苦しい戦いになると思われますが、
同人ゲーム制作の限界への挑戦が、当企画のテーマでもあります。
2 :
Kazuki :2010/09/19(日) 04:47:16 ID:CQL3qNOs
3 :
Kazuki :2010/09/19(日) 04:48:29 ID:CQL3qNOs
それでは第二幕の開始です。 前回までの模様は、公式サイトからご覧いただけます。 ボチボチ行きましょう。 では、寝ますw
おなじく今スレもよろ。
1時間テトリスって kihara さんのやつだろ?あれなら100%理解できてるぜ。
そこまで難しい技術を使ってないしね。Win32 API を使ったプログラムは古いけど。
>>1 はもしネットの情報だけでプログラミングするなら、
「猫でもわかるプログラミング」ってサイト勧めるから検索してみるといいよ。
そのサイトのC編、C++編の全部と、Windows SDK 編100章ぐらいまでの内容を
全部理解できてれば、テトリスは100%全部理解できるレベルだね。
俺を試したいなら、もしくはわからなくて知りたいことがあるなら、
テトリスのプログラムで答えて欲しいことは全部答えるぜ!
ちなみに、俺もさっき紹介したサイトの C言語編57章まで、C++編31章まで、Windows SDK 編200章ぐらいまでは全部読んで、 2年ぐらいかけて大体全部の章のコードを自分で試して、色々と改造して勉強してたわ。 (学校の合間に平均的に2〜3日に1章ずつ読み進めてちょうど2年ぐらいかかった) このサイトのページが作られた日付を見て気づいたけど、 俺がこのサイトで勉強してたのはもう10年以上昔になるんだな。 あと、本格的に専門にし始めてからはタイトルは忘れたが「C言語」「C++(上下巻)」の 日本語の詳説書全部で1000ページぐらいは全部読んだ、というか読まされた。 …何のレスって、俺はこのくらいは勉強してます、っていうアピール。
1000ページって本三冊分だよな 良くそのくらいの勉強で理解できたな。天才じゃね?
このスレの常識 defineとはconstantすること enumerateとはmacroすること 重要なのは基礎より実用 3と9の最小公倍数は27
Cの時は初心者だったせいもあって、色々変な本掴まされて3〜4冊買って ひたすらコーディングしてた。 ポインタと文字列と二次元配列が俺的に難関だったなぁ。 ポインタはパソコンのショートカットをイメージして克服した。 (test.txtファイルをint型の実体として。そのショートカット、ptest.txtがポインタ testが消えればptestも失われて、書き換えればptestも変わる ptestのショートカット参照先を変えれば、参照するモノも変わる。 つまりポインタとショートカットは同じ原理。) 二次元配列は九九プログラムとか魔方陣書いて覚えた。 文字列は最後まで不安な所だったが、C++でstd::stringが出てきて問題なくなった。 C++ha 俺本2冊だったわ。 1冊目がC++の絵本ってので、死ぬほど分かりやすくて 2冊目は独習C++でガッツリ。 それでどうしても分からない所はググったな。 それとC++コーディングスタンダードって本よく読んでた、あれは神だぜ。
まぁプログラム組むのを勉強と感じるかそうでないかで 越えられない壁があるよね 勉強と思わないほうでよかった
>>5 その動画を見つけてきました。
公式サイトでご紹介しています。
前スレの最後の方で言っていたのはこの動画のことです。
そのうち、これをもっと詳しく解説していくつもりです。
まあ、俺の場合、 Visual C++ 2010版ですが・・(^^
変数への代入すら理解してないことを前スレ早々に露呈して、本人もその間違い自体を認めてるのに、 そんな奴がC言語の解説なんてしようと思うこと自体が間違いだってことに気付けないのは何で? …と聞くだけ無駄なんだろうな。
ちなみに俺の公式のVisual C++ 2010の解説のところで、 ソースファイル、ヘッダーファイル、リソースファイルを実行ファイルにする。 のところで、リソースファイルにicoファイルとrcファイルといのが入っていたと思います。 icoファイルについては触れましたが、 あそこでrcファイルが入っていたと思いますが、 rcファイルはリソースファイルで使います。 上の動画を見れば、ご理解いただけると思います。 まあ、そのうち解説するつもりですけどね。 ていうか、あそこに載ってるのが俺が作ったプログラムでもあるんですけどね。。 そこに気づいてほしいね。(^^
ていうか、ニコ厨さんは、 リソースファイルも知らないわけですね・・。(^^; これでニコ厨のレベルが解りました。 そんな人たちにプログラミングを解説していると思ってください。 このスレのニコニコ動画の時代から 俺の追っかけをしている人は、 そのレベルではないかと思っています。 まあ、2chの住人はさすがにレベル高いですけどね。(^^;
追っかけ(笑)
>>10 >1冊目がC++の絵本ってので
これ、俺もみたけど載ってるサンプルがいちいちいやらしいソースになっててウンコだった
なんでもっと素直なサンプルをだな(ry
関数に引数で値を渡してる例が3つか4つ程度しかない
この本で育った人間の逝く末やいかに!?(笑)
あの動画で、ウィンドウを表示するところで、
ニコ厨さんたちは、
「NULLだけ理解できた」とか「俺にはわからん」みたいなことを言ってる人もいる。
多分、あの人たちはプログラムを知ってると思う。
でも、なぜ、理解できないのか?
理解できないはずがありません。
難しい単語が並んでいるので難しく考えているのでしょうけど、
やってるのは、int型で構造体を宣言しているだけなんです。
構造体なんてC言語の基礎の基礎です。
知ってるはずのことが、理解できない。
ところで、ニコ厨さんって面白いね。(^^
あの動画を見ながら、
何度突っ込み入れたくなったことかww
ttp://www.kazuki-sendo.com/game/?p=583 俺が言ってるのは、
ここで紹介している動画のことです。
■■■ Kazukiの同人3DRPG制作 削除前ログまとめ ■■■
- INFORMATION -
本ページは「千堂 和樹」(ハンドルネーム)という方のコミュのログです。
コミュ内では主にとって都合の悪い書き込みは全て削除されています。
主への反対意見はもちろん、アドバイスなどであっても投稿者を全て荒らし扱いとし、
(自身の発言も含め)関連する書き込みを全て削除の上、コミュから強制退会させています。
また、批判されるなど都合の悪い状態になると、それらをリセットするためにコミュごと削除し、
メンバーを全て追い出した後、コミュの作り直しなども行っています(過去3つ作成し、全て削除しています)
これはコミュ主の情報操作により隠蔽されてきた掲示板等での行いのほとんどを記録した非公式ログです。
掲示板で削除されたコメや、これまでの経緯が気になる方など「真実」を知りたい方はご利用ください。
主の対応に嫌な思いをされた方のために、過去の行いを揉み消す行為は絶対に許しません。
http://dl.dropbox.com/u/2886821/kazuki_matome.html
ttp://www.kazuki-sendo.com/game/?p=279 ↑
この解説ではまったく触れてないけど。
これ見れば俺のレベルが解っていただけると思うのですがね・・。(^^;
ここに載っている「ATOM」とか「BOOT」とか
君たちには意味解るのかな?
ちなみに、BOOTとbootは意味が違うからね?w
まあいいや。
C言語編の解説が終われば、
嫌でも解説していくと思うから、
楽しみにしておいてほしいよ。
>>21 はいはい。
あなたは、このスレの邪魔がしたいだけですね。
何やっても俺、スルーするから、
何やっても無駄だよ。
まあ、好きにしなさい。
俺はそういうのには興味がないの。
同人ゲーム制作と、
ゲームの作り方を初心者に解説することにしか興味がありません。
では、次の解説でもボチボチ作りますか。
スルーできてねぇじゃん
ATOMはWinAPIの型であってC言語とは全く関係ないですよ^^;
>>25 でも、使わないとゲームは作れません。
もちろん、「Windows用ゲーム」ですが。
そういえば、Platform SDK について、
まだ、まったく触れていませんが、
そのうち、Platform SDK も初心者向けに解りやすく図解入りで解説します。
こういう知識は知ってるのに、
基本的なことは理解できていないのはなぜかというと。
多分、ほとんどの人は、
教科書の1ページからプログラムを勉強しているのだと思うのだけど、
俺の場合、完成したゲームのあらゆるソースコードを?2?で入手して、
そこに書かれている意味を一つ一つ調べて学んで行っているからです。
な の で、 すでにゲームが完成していたりする。
だから頭でっかちで変な理解になる
>>28 だから、必要なところだけ学べて、
短時間でゲームプログラミングが理解できる。
C言語をイチから学んでいって、
C++もイチから学んでいけば、
それこそ、膨大な時間が必要だと思うよ。
前にC++のインクルードで呼び出すhファイルの関数を調べて見た時、
膨大にあったので、
これを全部理解するのは無理だと思ったので、
完成品 >> そこに載ってることだけ学ぶ >> 理解できた
という風にしました。
てか
>>22 の解説で出てるコード見てみたけど
こんなこと言ってるが
>ていうか、あそこに載ってるのが俺が作ったプログラムでもあるんですけどね。。
あれどう見てもwinアプリで自動生成されるスケルトンだろ
>>29 最低限必要なことすら理解できてないくせになにいってんの
>>31 前スレでの、
int型は1バイトの領域を確保するとか、
>b=0;
>a=50*(b+10);
>printf("%d %d",a,b);
>この結果が「500 0」になるのかが解らん・・。
>「(b+10)」←この時点で、bに10が足されているはずなんだよ。
このことを言ってるのかい?
俺は、あの頃までは「bに10がプラスされる」と思っていた。
でも、本当は違うかった。
でも、aの領域を表示すれば、500が表示されることは知っていたけど、
深いところまで理解してなかったということです。
でも、こんな基本的なこと、あんまり必要なーおーww
まあ、でも勉強になったから皆さんには感謝してるけどね。
そのお返しに、もっと難しいことを教えてあげるよ。
> 完成品 >> そこに載ってることだけ学ぶ >> 理解できた そのやり方で現に理解できてなかったじゃん、全然。 b+10 で b に 10加えた値が代入されると思ってたんでしょ? 「.hファイルに関数の意味が書かれている」とか、いまでもそう思ってるよね?
代入が必要ないとかマジで言ってんの?
多分、こういうのって、 教科書の1ページ目とかに載ってんだろうな。 明日にでも書店にいって、 C言語の教科書でも立ち読みしてくる。 てか、今から書店に行こう。 うん。それがいい。 ついでに「14歳からシリーズ?」ってのも見てくるよ。 名前に惹かれたw(^^ 初心者(小学生)向けに教えているって気がするしね。 てなわけで、出掛けてきます。
> でも、こんな基本的なこと、あんまり必要なーおーww これが「必要ないこと」なら、必要あることなんてなにもないよ
> そのお返しに、もっと難しいことを教えてあげるよ。 間違いなく、その「難しいこと」もまるっきり間違って理解してると断言できるなw
さんざん間違い突っ込まれて、難しい質問総スルーして どうして>>君たちには意味解るのかな? こんなセリフ吐けるかな
>>39 煽るのもいい加減にしろ
誰だって初めは未熟なんだから大目に見てやれよ
それとも餓鬼しかいないのかこのスレは?
知ったかkazukiさんキャーステキー(棒読み)
難しい質問:釣り問題
間違い:デタラメもしくは言いがかり
こう言うフィルターかかってるんだろうな
>>40 初めはとか言われてももう4ヶ月経ってるんだぜ?
中坊ならまだわかるんだが、30過ぎたいい大人だからな
批判されるのも仕方ない気はするぞ
> 誰だって初めは未熟なんだから大目に見てやれよ 未熟な初心者が解説サイトなんて作っちゃダメだろ
>>42 創作に年齢は関係ないだろ
作成ペースは本人の自由だ
>>44 そんな事を言っていたら解説サイトなど作れないだろ
初めから完成されたものを求めすぎだ
ちゃんと勉強してから作れば良いだけの話じゃねーか
だれも未熟な事自体を否定してるわけじゃないよ だれだって初めは初心者だそんなことは分かってる。 でも未熟で間違いも多いのに解説サイト作ったり あくまでも自分はできる奴、それ以外の俺らなんかは出来ない奴と決めつけた発言が反感を買ってるわけ。
解説サイトは悪くない。でも間違った解説サイト害悪。
創作活動はどう進めようが個人の勝手 間違った情報を垂れ流すのはそうではない 間違った情報を垂れ流すことの害悪は子供だろうが大人だろうが関係ない (子どもがやったことでも大人がやったことでも害は同じ) ただ子供は多少の害なら「子供だから仕方ない」と多めに見られるだけ 大人には大人の分別が求められる
間違って見えてもこれが初心者向き
そんな枝葉末節はどうでもいい
俺の言うことを理解してないだけ
議論は「見てる初心者」に迷惑
そんな幼稚な言い訳を繰り返す
>>1 に住民の嗜虐心がマッハで炸裂
そんなスレ
間違った解説こそが「見てる初心者」にとって迷惑なのにね
> そんな事を言っていたら解説サイトなど作れないだろ > 初めから完成されたものを求めすぎだ もしかして : あなたもkazuki 解説サイトは完成されたものでなければダメだろ
初心者が解説するってのがもう意味不明
>>1 は自身初心者じゃないと主張したいらしい、重ねて意味不明
初心者じゃないことを示すためにソース出せってのは荒らし扱い
基礎はよく分からないけど応用なら得意とか謎ロジックが大転回
解説ページ見てきた。 サイトの出来は悪くないし、解説も目くじら立てるほど酷いとも思えない。 ただページ重すぎ、pingbackとか怖いの読み込んでるしw。
あれが解説サイトじゃ無くて開発日記なら問題なかったんだがな
まぁ、まちがった認識に対して素直に反省できない限り行末は暗いだろうな
>>52 本人の中では合ってるし、わかりやすい解説なんだろうよ
本人の中だけな
体裁はそりゃWordpress、主の嫌いな「他人のコードを使ってるだけ」だから…
公式サイトのうpろだの画像とか、zoomeのコミュニティの画像とか著作権やばくないの?
よし! 次の解説の画像が全部完成した(^^ あとは、これを切り抜いて、 記事を書くだけです。 今回は、かなり重要なことを言っていますよ。 おたのしみに。
間違いさがしの新作もうすぐか。
>今回は、かなり重要なことを言っていますよ。 かなり重要な間違いを言うのかな
「解説」を載せてるんだから解説サイトだろ
>>55 あの程度のページで重いとか・・。
いったいどんなパソコン使ってるのですか?
とても3Dゲームとかプレイできないような気がしますが?
ページの重さと3D描画の重さはほとんど関係ないわけだが
俺の解説は画像作成が大変なのです。 一個一個、愛情と真心を込め・・・ うえwwうえwwww 自分で言っててキモチ悪w なので、今は紅茶でも飲みながら一服中。 記事を書くぐらい5分もあれば書けるので、 あとで、パパッとチャチャッと完成させますね。(^^
>>63 392 名前は開発中のものです。 [sage] 2010/09/15(水) 18:04:39 ID:CElqmS7j Be:
今、構造体の解説を作っています。
今度こそ一発で通りたいな(^^
かなり解りやすく解説しているので、
初心者に優しい解説になっています。
おたのしみに。
はて?初心者向けの解説を作ってるようにしか見えないんだが
うわ引用部分見にくいな >392 名前は開発中のものです。 [sage] 2010/09/15(水) 18:04:39 ID:CElqmS7j Be: > 今、構造体の解説を作っています。 > > 今度こそ一発で通りたいな(^^ > > > かなり解りやすく解説しているので、 > 初心者に優しい解説になっています。 > > おたのしみに。
>>67 >記事を書くぐらい5分もあれば書けるので、
それで、あんな意味不明な文章が出来上がるわけですね
>>54 俺は初心者の気持ちが良く解る初心者が、
初心者向けに解説を書くことが重要だと思いますがね。
自分を見つめなおすという点でも復習になるし、
解説を書く場合は、
自分の知識を整理する必要もあります。
もし、あんたが高校生で学生さんなら、
今日、学校で先生に習ったことを誰かに解説してごらんよ。
そしたら、成績が驚くほど上がりますので・・。
この勉強法が一番効果的だったりするんですよ。(^^
>>65 無駄に読み込んでるもんが多すぎるんじゃない?
リピートしてほしいならもう少し軽くすべきだよ。
重さより内容を改善しろよ 本気で初心者のこと考えてるなら間違った解説なんかすんなよ どうしても解説やりたいならちゃんと勉強してからやれよ 間違ってる部分を指摘されたら直せよ
>>71 ならばもっといい勉強法を教えてあげるよ。
間違ってた部分を消して正しい部分に書き換えるんじゃなく訂正線で間違えた個所を明確にしつつ
直前か直後に正解を書くといいよ。
何事も勘違いや間違いをしやすい場所ってのはあるから注意を促せるようになる。
それを他の初心者が見ればわかりやすいしな。
あああ
重い理由は、HTTPアップロード率が高いからです。 解説に画像を多様しているから重たいのです。 一応、あなたのために表示記事数を減らして 軽くしておきました。
>重い理由は、HTTPアップロード率が高いからです。 意味不明
>重い理由は、HTTPアップロード率が高いからです。 いや、意味わかんないから。 あんたんとこのサイトは四六時中アップロードしてんのか。
まあ、これでも聞いて待っててください。 ニコニコ動画時代から追っかけして人は、 これ懐かしいですねww
アップロードとは、パソコンからサーバにデータをアップすることですね? これをサーバ側視点で考えると、 サーバは、あなたのパソコンにデータをアップロードしていることになります。 この状態のことを、 HTTPアップロードと言います。 HTTPアップロード率が高いとは、 アクセスが集中しているからです。 そんな場合のブログでの改善方法として、 簡単なのは、トップに表示させる記事数を減らせばいい。
>>82 RFCとWikipediaと解説サイト読んで来い
なめてんのか
さすが自称WEBデザイナですね!何でも知ってる(笑)
次は何の解説すんのー?
なかなか凝った仕掛けで面白いサイトですね。 でも、サイト名を「間違い探しサイト」にすることをオヌヌメします。 よい子が勘違いしないように。念のため。 あと、間違い投稿掲示板と、リピーター獲得のために正解者プレゼント も欲しいところ。
>>82 最初からアクセスが集中してるからって言った方がわかり易いよ。
10万PV/日位は軽く超えてんのかな。今時無料のとこでもその位は捌けるし。
あとページ毎の情報少ないから、更に削ったら何もなくなっちゃいそうだけど。
TOPページにカウンタ設置希望
あの頃のニコ厨さんたちの加熱っぷりは凄かったですね。 結局、あの動画、5万回以上再生されたんだっけ? そして、ニコニコ動画でコミュを開いたら、 一日で90人の人がコミュに入会して、 結局、290人ぐらいの人が入会したんだっけ? その中にあなたも含まれていたんですね。 あれは、ニコ厨さんたちのゲーム製作の関心を物語っていると思う。 みんなの期待に答えるべく、 あの頃はゲーム制作動画をニコニコ動画にアップしていました。 そんな状態の俺に嫉妬して、 散々、邪魔してコミュを二回もぶっ壊してくれたのが、 あなたですよね? きっと旧コミュのメンバーさんたちは、 残念なキモチになったと思うよ? 本当にヒドイ人だよあんたは・・。
3DRPGマダー?
ああ。 ごめんごめん・・。 なんでもありません。 じゃあ、今から記事書きますね。 1時間以内にはアップされてると思います。
>>94 おいおいやめてくれよ・・・
モノホンのアレだったらこっちもなんか申し訳ないよ
>>92 とうとう丸パクしやがったな>kazuki
C言語の値の代入すら理解してなかったグズがハードウェアT&Lとか背伸びしようとするからw
コピペ世代ってこういうこと普通にやりそうで怖いな
ますます次の解説が楽しみだ
クソワロタ DirectXのサンプルプログラム、3Dデータときて今度は書籍の丸パクリかよ
>>89 >散々、邪魔してコミュを二回もぶっ壊してくれたのが、
自分で勝手に閉鎖した癖に何を言い訳してるんだ
しかも2回目のコミュは何の連絡も無く突然閉鎖してメンバーの反感を買ってるし
そして3回目は1〜2日くらいで中断
何もかも他人のせいにして情けない奴ここに極まる
アフォから犯罪者に格上げか。
書籍どころかドラクエのライアンの歩行グラをスクショから切り取って 「素材ができました(キリッ」とかやってたもんな
根っからの糞だったのかw まあ、わかってはいたけどな ただのアフォなら救いようがあるけどこれはもうねw
いやコレ本当に中学生とかじゃないの? 30代ってホント?
おいおいおいおいww ガキかよお前w 俺のサイトの内容を勝手にキャプターして、 ネットに公開してるから、 これ著作権法違反だぞ? おまけにどこかの本の内容まで 写真撮影して無断でアップしているのかよ。 これだからガキは・・・・。 お 前 が 今 犯 罪 者 だ ぞ ? 解っててやってる? 悪いことは言わない。 今すぐ消してきなさい。 通報してバレたら一発でアウトです。 俺、こういうのには厳しいから、 厳しく取り締まらせて頂きます。
>89 5万? せいぜい数千だろ? 累計でとかわけのわからない屁理屈はいらないからな
キャプターってどこの言ですか?
>>107 人の事言えないな
お前のサイトの文章もアウトだぞ^^
>俺のサイトの内容を勝手にキャプターして、
>ネットに公開してるから、
>これ著作権法違反だぞ?
頭ダイジョーブ?
こういう下らないことをするから、 俺はお前が大嫌いなんだよ。 妙なことせずに、 普通に健全に荒らしをしてなさい。 無断でアップするだけならまだしも、 それをやった犯人をここで堂々と公言するとか。。 本当にお前大丈夫か?? お前みたいな考え方で、 軽い気持ちで世間を渡っていたら、 そのうち、マジで痛い目に合うから気をつけた方がいい。
俺は見なかったことにしておいてあげるから、 次から、こういうマネはやめること。 それだけは約束してくれ。 それ以上は言わないからさ・・。 ホント、マジで勘弁してほしいよ・・。
俺が極悪非道なヤクザだったら、 あんたみたいな人を遠慮なくカモにするかもね(^^; 悪いことは言わない、 次から気をつけない。 ホント、相手が俺みたいな優しい人でよかったね。
>悪いことは言わない、 >次から気をつけない。 何に?
何これ? 解っててやってる? 解っててやってる? 解っててやってる? ちょっと見てくる。 悪いことは言わない。 ホント、相手が俺みたいな人を遠慮なくカモにするかもね^^; こういう下らないことをするから、 軽い気持ちで世間を渡っていたら、 次から気をつけた方がいい。 ホント、相手が俺みたいな考え方で、 あんたみたいな優しい人でよかったね。
解説というのは、 同じことを解説すれば、 同じような内容になります。 そして、俺は主にネットでググって調べて 学んで、それをメモって参考にして解説を書いています。 本もネットも何にも見ないで 新しい知識を得ることなんて不可能なことです。 今日、書店に並んでいる解説本の筆者も、 どこかの誰かが一番最初に説明を書いた本なり記事なりを参考に勉強して、 新たな知識を身に付けて書いています。 だから、似てて当たり前。 多分、俺が参考にしたサイトの解説を運営している人が、 たまたま、その本の解説を参考にして解説を書いていて、 それを見て学んだ俺が、また解説を書いているから、 似たような解説になってるんじゃないの? これのどこが犯罪なんだよ。 軽々しく犯罪という言葉を持ち出すものではない。
>だから、似てて当たり前。 一字一句同じなんですが
著作権の話するなら、せめてサイトに載せてるMAD動画どうにかしてからにしろよ
逆ギレワロタ
解説になってるんじゃないの? だから、似てて当たり前。 これのどこが犯罪なんだよ。 これのどこが犯罪なんだよ。 今日、書店に並んでいる解説本の解説を書いています。 多分、俺が、また解説を書いていて、 それを見て学んだ俺が参考にしている人が、 似たような内容になります。 そして、俺が、また解説を書いています。 本もネットも何にも見ないで 新しい知識を身に付けて書いている人が、また解説を参考に勉強して解説を運営して解説を書いた本なり記事なりを参考にした サイトの解説を書いた本なり記事なりを参考にしたサイトの解説を参考に勉強している人が、 同じような内容になります。 軽々しく犯罪という言葉を持ち出すものではない。 今日、書店に並んでいる解説本の解説を書いているから、 それをメモって参考にしたサイトの解説を書いています。 多分、俺が参考に勉強して解説を運営しているから、 同じことを解説すれば、 どこかの誰かが一番最初に説明を書いています。 多分、俺は主にネットでググって調べて 学んで、それを見て学んだ俺が、また解説を書いた本なり記事なりを参考にして、 新たな知識を身に付けて書いています。 本もネットも何にも見ないで 新しい知識を得ることなんて不可能なことです。
ま。 んなこと、どーでもいいけどね。 好きなように言ってればいいんじゃないの? そんなことより、ようやく記事が完成した。(^^ 今、非公開状態で最終チェックしています。
kazukiたん(^ω^)ペロペロ 次は何の解説?
参考までに、その本のタイトルを教えてください。 出版社を調べておきます。
kazukin本当はしってるくせに〜 プーッ!
>>124 15歳からはじめるDirectX 9 3Dゲームプログラミング教室 C++編―Windows 2000/XP/Vista対応 [単行本]
大槻 有一郎 (著)
出版社: ラトルズ (2007/04)
ISBN-10: 489977186X
ISBN-13: 978-4899771869
発売日: 2007/04
あんたねぇ、main関数は一番下に書かなければならないなんて、 大嘘書いてんじゃないわよ。いまどきそんな嘘オカマだって気づく っちゅうの。そんなことより、あたしお尻痒くてしようがないのよ。 あんた、ちょっとあたしのお尻の穴掻いてくれない?
更新キタ━(゚∀゚)━! 早速間違い発見
>>126 ありがとう。
ちょっと、今からその出版社に通報してきます。
そうそう。
さっき新しい解説をアップしてきました。
どうぞ、ご覧ください(^^
>ちょっと、今からその出版社に通報してきます。 どうせそんな度胸無いんだよね。 まず相手にされないだろうし
マクロb www しかも実行時メモリに定義されちゃってる雰囲気だしwwwww
あんだけ言われてまだマクロの意味が分かってないのかよ
>>130 メールを一本送るだけだよ。
相手にされなければ、それはそれでいいよ。
そもそも、そんなことそんなに興味ないしね。
俺はルールを守らないことが嫌いなだけです。
まっすぐで熱い男なんです。
メールは、さっき送っておいた。 あとのことは俺は一切知らん。 さて、歯磨いて寝るか(^^
真=1 みたいに断言するのはどうかと思うわ、C言語歴5ヶ月目の俺でも。
kazukin的には #defineで確保されるメモリって何byteだと思ってるの?
これネタスレだよな? 誰かそうだと行ってくれ...
>>132 眠いので明日確認します。
では、お休み。
初 め ま し て。 メールで失礼します。Kazukiという者です。 貴社より3年前発行された、25歳からはじめるDriectY 7 1Dゲムプログーラミング教室 C--編 という書籍についてですが、この本には、俺が数カ月前に執筆した 「DirectZの歴史」という記事と非常に酷似している部分がある。 これはこの本の筆者が俺の記事をパクったに違いないです^^;wwwうえwwうえww 是非ともこれは直してもらいたいと思っています(キリッ 俺は、こういう点は厳しい男なんです。俺がヤクザだったら、筆者をカモにしてますww そもそも、出版社であるはずの貴社がこんなパクリ本を許容してもよろしいのですか^^; この件についてはしっかり考えて貰いたいと思います。 では(^^
あ。そうそう。 さっきメールで通報したけど、 あんたが犯人とは言ってないから安心しなさい。 ここのスレのことも内緒にしておいてあげてるからな。(^^ 俺も鬼じゃないんだ。 たまたま、アップローダに、 無断公開してるファイルを見つけたのでご報告いたしました。 ということにしておいてあげてるよ。(^^ 感謝しなさい。 ではまた。
華麗にスルーされたぜ
a=a+(b>20); ↓こう書き換えるべき if(b>20) {a++;}
>>92 丸コピじゃねぇかw
こいつは自分の著作権には過敏に反応するくせに(ログサイトとかもそう)
人の著作物は平気でぱくるよな
前のマップパクリとかさ
>>144 比較演算の返す値を示したいんじゃないか?
それならそれで
int a=1>2;
printf("%d",a);
とかでいいんだろうが
というかいちいち代入をa=a+bでやってるあたり
理解してないから応用出来ないんだろうな
多分kazukiは真=1じゃないっていっても信じてくれないんだろうなぁ
代入をa=a+bでやるのが何で問題なんだ
変数 a のメモリが確保されてそこに値 (0なり1なり) が代入されるのと同じレベルで マクロ b にメモリが確保されてそこに 30 が入る、と理解してるのか
プリプロセッサなんてなかった
>>148 それは問題じゃないけど、条件式の値を変数に代入したいだけなのに、a = 0 として
からそれに条件式の値を加算するのは変
変数 a と同じレベルでマクロ b にもメモリが確保されるなら、&b でそのアドレスが 取得できそうなもんだな つか b が左辺値でもおかしくないはず。ランタイムで動的にマクロを書き換えるプログラムとか 書けそうだww
>>151 あまりにもアレで気づかなかったわ
なんて無駄な事をしてるんだろう
しかも、文中で
a=a+(b>20)を
真偽値をaに代入
と説明してる
なんか、代入をやっぱり理解出来てない臭いがするぞ…
こいつ30代ってマジかよ…20代だと思ってたわ… んで、出版社から訴えられてこいつ逮捕されるのいつ?
ここは非常に愉快なインターネッツですね
パクったのは明らかだけど、流石にここまでみみっちいことで訴訟を起こせるほど出版社も暇じゃないだろう。 ってか見つけた人乙。
サンプルうpは渋るのに検証画像隠蔽は迅速なのねw
まさかとは思うけど#defineが定数しか定義できないと思ってるんじゃ・・・? #define KAZUKI printf("ばーか") int main() { KAZUKI; return 0; } こういうのもできるって次の解説に載せていいですよ^^
この程度ならどちらも引用の範囲内にあたるだろうから著作権的には 問題ないだろう、サンプル丸ごとアップとかならまだしも と言うか著作権著作権言っているのに画像アップローダーにある アップテストとか書かれているエロゲ?の壁紙は一体なんなんだ
参考文献すら載ってないのに引用とか言われてもな
自分の文章として使ってしまったら引用とは言わん
結構盛り上がってたみたいだけど、そろそろ
>>1 のバックレ終了かな。
訴訟には普通なんないけど 警告と取り下げ要求はいくよな
何でこの部分だけ盗作なんだろう 解説は間違いだらけでも自身で書いてあるのに あとヤクザ云々言い出すと恐喝になるぞ
自分の言葉で書けるだけの理解も出来なかったんだろう
今回はかなり重要なことを言ってますね。 あの解説で一番伝えたかったのは、 ifとか比較演算子ではなくて 「値を返す」の部分です。 ifなんて実際のプログラムではほとんど使わないしね。(^^ あと、C言語の計算は「後ろから前にむかって」の前回の解説が、 ここで生きてくる。 なんだか、ちょっとずつプログラムっぽくなってきたでしょ? 少しずつ少しずつ解らないようにレベルを上げていくから、 気が付いた時には、初心者が中級者レベルに成長していると思う。 なんて、初心者に優しい解説だろうか(^^
で、ですね? こんな基本的な知識を、 Direct3Dという高度な技術に置き換えて考えてみるのです。 Diect3Dのメソッドを呼び出すの部分は、 基本的な構造体で解説する。 難しい単語が並んでいるけど、 要はこういうことなんですよと。 で、各領域に格納した値を料理するわけだ。 使わない部分は、NULLを格納するだけです。 と言えばいい。
>ifなんて実際のプログラムではほとんど使わないしね。 一つでもプログラム組んだことある奴はこんなこと言えねぇ
で、一つ気になるから教えてくれ なんでb>20の真偽値をaに入れるのに int a=0; a=a+(b>20); ってコードにしたの?
難しくて複雑に見えるゲームプログラムも、 基本の基本であるC言語に戻って考えれば、 誰でも理解できる。 理解できれば誰でも「プログラムが組める=ゲームが作れる」 なので、ゲームプログラミングは、 そんなに難しくない。 まだ解説していないけど、 そういったプログラムをループさせて実行させて、 「ある条件」に達したらそのループを抜けて、 別の関数に移り、 またそこでループを繰り返す。 ゲームプログラムの正体はループです。 何千、何万回とループを繰り返しているのが、 ゲームプログラミングです。 その中に、DirectXという高度な技術を使用しているだけ。 俺はそれが理解できた時に、「なるほど!!」と思ったね。(^^ そんな気分を味あわせてあげるよ。
>>168 普通にif文のオンパレードな訳だが…
いや、使わなくても出来無い事は無いけどさ
>>170 そんなの決まってるじゃないか。
前回のおさらいのために、
初期化を解説しているのです。
何度も出せば、そのうち自然と覚えてくれます。
あと、初期化しないと使えないし・・。
あ。そういうことを言ってるんじゃないのかな?
>ゲームプログラムの正体はループです。 なるほど。ループだけならkazukiでも作れる
a=a+(b>20); a=b>20;
ifよりも条件分岐の方をよく使います。 あっちの方が便利だしね。 実際のゲームプログラミングも、 条件分岐をよく使って組まれてあったし。
>ifよりも条件分岐 いや、ifが条件分岐な訳だが。
>>173 int a=b>20;
じゃダメなの?
そもそも
int a=0;
が初期化のおさらいだとしても
a=a+(b>20);
にする説明にはならないわけだけど
#define b 30 これでbを変数aと同じ扱いで説明するのは危険じゃね? これだとbも変数のように見えてしまう。 そもそもコンパイル後にはbという領域は存在しないはずだし。
> あと、C言語の計算は「後ろから前にむかって」の前回の解説が、 馬鹿もここまで来ると芸と呼べるかもな
なので、ゲームはループを繰り返して、 その実行結果を表示させているので、 何をしないでもパソコンに負担がかかっています。 よし。 じゃあ、試しにスーファミのドラクエ3で、 敵を倒さずに、永遠に続けてごらんよ。 あるターンに達したら、 主人公は力尽きて死んでしまいます。 あと、ファミコンゲームを、 何時間もずっとプレイしててごらん。 ある地点になるとプログラムが起動しなくなるから。
if文よりも条件分岐の方がよく使うとかほんとスゲェな。
>あと、ファミコンゲームを、 >何時間もずっとプレイしててごらん。 >ある地点になるとプログラムが起動しなくなるから。 バグじゃねーか
>>178 え??
何を言ってるの?
a=a+(b>20);
↑
これだけだと使えないに決まってるじゃんw
int型を指定していないんだし。
ん?そういうことを言ってるのではないの?
>>184 バグじゃねーよwwww
そういう構造になってるの。
どのゲームでもそうなるよ。
ホント、解ってないな(^^;
でも、これであなたのレベルが解りました。
>>185 >そもそも
>int a=0;
>が初期化のおさらいだとしても
初期化のおさらいとしてaを0で初期化したとしても
>a=a+(b>20);
>にする説明にはならないわけだけど
次の行でa+(b>20)を代入する説明にならない
ってこと
さらに言うと真偽値をみたいだけなら printf("%d",30>20); で問題ないんだけどな なんでわざわざ一度変数に入れたのかね
>>190 解説サイトに一度もprintfが出てないし、使い方分からないんじゃないかな?
ん!?何いってんだ俺;; 頭が逝ってしまったようです
重症だな
ちなみにC言語はプログラミングの基本だから。 多分、C言語が理解できれば、 他の言語でも応用が利くと思う。 だから、C言語はプログラムの登竜門なのだ。 まあ、他の言語はまだ知らないけど、 PHPとかC言語によく似てると思う。 似たような単語が出てくるしね。
>>195 >多分、C言語が理解できれば、
お前には永遠に無理だろうな
>>189 俺は誰かが作ったゲームプログラムを自己流で解析して、
それを改良してプログラムを組んだりして、
プログラムを理解しました。
なので、成長スピードが
教科書を1ページから勉強している人とは全然違う。
だって、もうゲームが完成していて答えが完成しているんだし。
答え >> その意味を知る
これが俺の勉強法の基本かな?
で、 なんでaにb>20の値を代入するのに a=a+(b>20) ってしてるの? 説明してよ
真面目に本読んで、コード書いて、実行して、と勉強してれば、C言語の基本くらいなら 3日もあればだいたい押さえられる 4か月も経って代入やら定数やらの意味も理解できてないのは相当のバカ
>>197 > なので、成長スピードが
> 教科書を1ページから勉強している人とは全然違う。
4ヶ月もやっててこのレベルなら確かに全然違うね。
>>197 その自己流の解析方法を解説するべきだろ。
現状の
>>1 の理解度だとCを理解してるとは言い難いぞ。
まぁ、誰かが作ったゲームを解析してとか言ってるけど
適当に他人のソースを改変して作ったってだけだろ。
その方法は学習法としては効果はあるはずだが、現状の
>>1 の状況では
「プログラムを理解しました。」とか言いきっちゃうのはまずいw
成長スピードがすごいと思うのも途中の段階で「ゴールに到達した」とか
勘違いしてるからだよw
>>1 が解析した元のソースを書いた人は今現在の
>>1 よりはるかに高次元の
存在だってことに気が付くべきだw
>適当に他人のソースを改変して作ったってだけだろ。
前スレ
>>478 ,480で、改変するほどの能力もないって分かってる
詳しいことは言えないけど。 あるところで、 何でもいいからゲームプログラムのコードを入手して、 そのコードを見てごらんよ。 最初は、複雑で驚くかもしれないけど、 それに臆することなく、 一つ一つの意味を知れべてご覧なさい。 そしたら、プログラミングがもっと詳しく知ることが出来ると思う。 そうやって中級者の壁を越えて、 上級者になるのです。
>そうやって中級者の壁を越えて、 >上級者になるのです。 まず、初心者を脱出して、初級者になることから始めようか。
>>197 だまされたと思って
#include <stdio.h>
#define b 30
int main()
{
int a = b > 20;
printf("%d\n", a);
return 0;
}
で実行してみてくれ。で、なんでこうじゃなくて int a = 0; a = a + (b>20); にしたのか説明してくれ。
>>1 の世界だと中級の壁を超えるとオーバーフローして初心者に戻れるみたいだな。
さすがループカウンタを放置してゲームが止まるのが普通な世界の住人w
>>187 ごめん。。
難しくて何を言いたいのかよく理解できない・・。
とにかく、真は1、偽は0と理解してください。
>>208 >とにかく、真は1、偽は0と理解してください。
きみはじつにばかだな
DXライブラリは認めないけど他人のコードを丸パクリするのはおーけーなわけか
>>206 意味なんて、ねーおww
そうやって解説したいから、
そうやって解説しただけ。
>>206 のソースも、
俺が組んだソースも同じ意味じゃないか。
多分、そのソースでも同じ結果になると思う。
1が表示されると思う。
ごめん。悪いけど解りきってることだから、
試す気にもなりません。
同じ結果になることが争点じゃないわけで わかりやすい解説をするのに無駄があるから突っ込まれたわけで
int a=0; a=b>20; ならまだわからんでもないが int a=0; a=a+(b>20); はb>20を代入するというコードにおいて正解とは言い難いなぁ 結果は同じだけど
>>211 なぜ、俺がDXライブラリを認めないのかというと。
あれは誰かが作ったライブラリなんです。
ライブラリでプログラムを組んで理解している気になっていたら、
きっとどこかで大きな落とし穴にはまると思う。
例えば、DXライブラリでウィンドウを表示させるには、
なんだっけ?
1行のコードを書くだけで良かったでしょ?
でも、あれは、そのコードを書くことで、
そういう結果になるように組まれているだけです。
もっと踏み込んだところを知らなきゃダメです。
>>217 stdio.hもライブラリ
Win32APIもライブラリ
DirectXもライブラリ
よし。 じゃあ、DXライブラリに対抗して、 いつか、俺がKAZUKIライブラリを作ってあげるよ。
>あれは誰かが作ったライブラリなんです。 最低限、自分でドライバを直接たたいて表示させろってことか。
ドライバも他人の作った奴だからドライバから書こうぜ そしたらほんとに理解したと言えるし
ドライバも、他人の作ったOSで動くんだぜ
直接vramをたたくしかないな
Windows 使うべきじゃないな。もちろん Linux だろうが DOS だろうが、他人の描いたコードを提供するものは全て排除
>>198 a=a+(b>20);
これについて、Kazukiが説明できない理由は、
www.kazuki-sendo.comのifの説明は、
>>126 の本の丸写しだからです。
そして著者の意図を理解してないから、なにも説明できない。
OSから自作か… もちろんコンパイラもライブラリを一切使わずに自作だよね Kazuki製のCコンパイラとか一回使ってみたいww
Cという規格も他人が作ったからKazuki言語作らないと 最終的にはマシン語の勉強かな
他人か作ったものがダメならCコンパイラだってダメじゃん。
まぁ、
>>219 の発言でわかるように、身の程知らずにもDXライブラリの作者と同格とか思っちゃってんだろ。
マシン語を理解するにはマシンの仕組みからでは? まずハンダゴテから覚えようか
マシン語だってCPU内のマイクロコード使ってるぞ
となるとCPUの規格から自作か…
あったあった。 ChangeWindowMode( TRUE ) ; ↑ これですね? DXライブラリはこんな短いコードを書くだけで、 ウィンドウが表示されます。 俺が言いたいのは、 これで満足するんじゃなくて、 このコードのもっと深い意味を理解しましょう。ってことです。 理解できてるなら、 別にDXライブラリだろうが何だろうが、 どのライブラリを使ってもいいよ。 プログラムは膨大なコードを書くことになるので、 ライブラリを使って時間短縮した方がいいに決まってるしね。
>232 じゃあ、説明よろしく。 DirectXでどうやってWindow表示するの?
ていうか前からちょっと気になってたけど >俺の場合、完成したゲームのあらゆるソースコードを?2?で入手して、 >そこに書かれている意味を一つ一つ調べて学んで行っているからです。 これ"P2Pで入手"か? P2Pが違法とは言わないけどP2Pで流れてるソースって違法の匂いがプンプンするんだけど
>>232 ChengeWindowMode=ウィンドウモード変更な?
フルスクリーンとウィンドウモードを切り替える関数だろ
昨日、14歳からシリーズのC言語の本を書店で立ち読みしてきました。 なんか、13歳からシリーズもあったよ。 でも、DXライブラリを使って解説していたので、 「使えねえや・・」と思って、即行で閉じました。 その代わり、DirectX11の新しい解説本を購入してきました。 DirectX11は、まだ使わないけど、 ちょっと理解しておきたいしね。 時代に乗り遅れないために・・。
>DirectX11の新しい解説本 興味深いな、どの書籍か教えてもらえる? DirectX11の解説本って和書が無いに等しいからな。
>その代わり、DirectX11の新しい解説本を購入してきました。 買ったら満足して、放ったらかしにしてそう。 というか、部屋の隅に同じ本が既に積んであるんじゃね?
>>234 ちょwwwおまwwwww
さすがにノーコメント・・。
>>232 目的と手段を完全に混同してるな。
単にDXライブラリがMS製じゃないからなんとなく嫌なだけだろ。
オプソ嫌いなおっさんみたいな奴だな。
で、まぁP2P使ったかどうかなんて証明できないからどうでもいいんだけどさ
>>198 に答えてくれない?
答えないなら
>>225 で正しいってことでいい?
えっとね。 俺が購入したのは、 「ちょっとだけDirectX11」というタイトルの本です。 筆者は下谷 秀俊てって人です。 この本面白いね。(^^ 俺が知りたかったことがたくさん書かれているよ。 まあ、この本は初心者向けではないから、 ある程度、DirectXを理解してないと、 サッパリ理解できないと思いますがね。
・エロゲ厨 ・ニコ厨 ・東方厨 ・解説厨 ・割れ厨←new!
>>241 ぶっちゃけ、どうでもいいwww
あんたが正しい!
よ!大統領!ww
>242 それか、悪いけど初心者本だよ。それ
中身を理解してないライブラリを使うのはダメだけど、 他人のコードを理解せず丸パクリで使うのはいいってことか 単なる自己満足以外の何物でもないな
解説(笑)も自己満足だしな。
>>244 自分が間違ってると認めるなら解説直しな
>>245 なに!?
この本を初心者向けと言ってのけるのか・・・。
これには、恐れいった。。
俺、マジであんたを尊敬するよ・・。
まあ、他の住人のレベルはどうだが怪しいのだがww
多分、ある程度までならプログラムを理解してて
それに満足している中級者レベルだと、俺は思っている。
上級者向けのDirectX11本って和書にはまだ無いんじゃね?
>>233 悪いが、こんなところで、
DirectXを使ったウィンドウ表示は説明しきれないよ・・。
ゴメンね。
でも、そのうち公式サイトの方で
詳しく解説しますので、ちょっと待っててください。
>>252 何の答えだよ・・。
検索って何を検索?
検索なんて何もしてないよ。
いったい、何が知りたいんだよ。
知りたいことを端的に質問してくれ。
今は、質問の意味すら理解できてない。
>>251 とりあえずここのいるヤツの9割くらいはおまいより若くてデキるやつなんじゃね?
よし。 詳しい説明を今から書くからちょっと待っててください。 質問の内容は、 >なんでaにb>20の値を代入するのに >a=a+(b>20) ↑ これだね? 俺はそう解説したいから、 って言ってんですがね・・。 やれやれ。(^^
>>256 なぜb>20の値をaに代入するのに
int a=b>20;
でも
int a=0;
a=b>20;
でもなく
int a=0;
a=a+(b>20);
というコードを書いたのか
ごめん・・・。 今、真剣に内容を読み直してみたけど、 やっぱり、何が言いたいのか よく解らん・・。ゴメン・・。 俺の回答、 「そんなのどーでもいい!」
>>260 DirectXの勉強に入ってからわからないことが出たらそうやって逃げるのか?クズめ
どうでも良くない。 b>20を代入する場合において a=a+(b>20)なんてコードは間違いだ。 今回は直前に0で初期化してるから結果は一緒だが、コードの意味が全く違う。
>>260 を訳すと、
「なんとか自分の間違いをごまかす屁理屈をひねり出そうとしたけどできなかった。
そもそも自分がどう間違ってるのかもよく分からない」
ってところか。
>>259 ああ、そういうことか。
つまり、C言語の計算は、
「後ろから前に向かって」考えるからだよ。
int a=0;
a=a+(b>20);
↑
こう書くと、
後ろから読んでね?
(20 > b )a= a
↑
つまりこういうこと。
=の左のaには、0が入ってる。
=の右のaにも、0が入ってる。
でも、=の左のaの0は、初期化の0
「int a=0;」←つまりここの0
=の右のa(実際は=の左のa)は、
初期化の0ではなく、計算結果の0が入る。
小学校も行ってないのか
Cの計算は普通に前から処理されることを知らないかわいそうな子 演算の優先順位って知ってる?
すごい 何がスゴイってなんか理解を超越した間違いしてる こいつの中では a+(b>20) と (20 > b )a 同義らしい やばいプログラミングはおろか数学の基本も超越しちゃってる
ああ。 間違ったw この場合は、答えは1かw なぜ?こんなことにイチイチ疑問を感じるのだろうか・・。 つまり、同じaを使ってるけど、 aに入ってる値は違うのです。 だから後ろから前に向かって考えてね?ってことです。
>>264 後ろから前に向かってって…
どこでどんな解説サイト見たらそんな理解するんだよ…
やばいよこの人 何がおかしいかもわかってないよ
質問の意味も理解してないし説明も思いっきり間違ってるし、どうしょうもないな
a=a+(b>20); ↑ これを (20 > b )+a= a ↑ こう読む。 なので、20とbと比べて・・。 という風に、一番最後の20から考え始める。 a=a+(b>20); ↑ これを aは、aプラス、カッコの中。とは読まない。
よーくわかりました^^ さすがッスねKazukiさん!!
ごめんね・・レベルの低い話題になってしまって・・・。 でも、俺はこういう初心者を黙って見過ごせないのよ。(^^;
すげぇ理解だ まるっきり間違ってる そもそもプログラム一切知らなくても b>20 と 20>b が違うことぐらい分かるだろ…
不等号とか小学校で習うんじゃね?
そういえば、まだ演算子の優先順位に触れてなかったね。 あとで、ちょこっとだけ解説しますね。
なんだ、こいつは他のレスが見えない病気かなんかなんかなのか?www
こいつの頭の中では 理解出来ないこと=間違ったこと なんだろう
BaKazuki
頭に疾患があるのはほぼ間違いない。
とりあえず理解しておいたことにしておかないと気が狂って死ぬんだろうな
> だから後ろから前に向かって考えてね?ってことです。 じゃあ #include <stdio.h> int foo(int a) { printf("%d\n", a); return a; } int main() { int a; a = foo(1) && foo(2) && foo(3) && foo(4) && foo(0) && foo(5) && foo(6); printf("%d\n", a); return 0; } これどんな出力になるか予想してみて。
突っ込み側を初心者扱いする事で自我を保ってるのか・・・
>>286 気が狂って死んだらどうするんだwwwww
>>286 Kazukiには高度すぎるぞw
多分実際に実行して答えだすけど説明できないってことになると予想
>>286 1
2
3
4
0
0
こんなの常識じゃないか。
試すまでもない。
なんで後ろから前じゃないの?
さて説明のお時間です なぜそうなるのかなkazuki君
真=1じゃない事を示すいい証明
予想が的中しそうだw
>>294 さらに実行順序やAND演算の評価範囲まで分かるいい例
わかっていることは結果を書いたことで証明しただろ?(^^ とか言ってくるぞw
>>291 めんどくねーな・・。
最初のint fooで、int aを定義、
それを表示
さらにリターンで返す
mainでint型を定義
理論演算子で考える。
それをint aに初期化。
C言語はmain関数から実行されるから、
1
2
3
4
↑コレはmainの実行結果。
0
0
は、上の実行結果。
これでいいかい?
言ってることが滅茶苦茶すぎて訳分からんな 間違ってることだけは確かだが いったいどういう理解の仕方をしてるんだろうコイツは
めんどくねーならいいだろw って突っ込みは置いといて さて君の理解で行くと後ろから順番に読むんでしょ? なら 6 5 … となるはずだよね^^
> 1 > 2 > 3 > 4 > ↑コレはmainの実行結果。 > > 0 > 0 > は、上の実行結果。 ?? 初心者の僕に分かるように教えて下さい!!!
もしかして: 論理演算子
>>298 おいw、全部mainの実行結果だろ。日本語弱すぎ。
それとfoo(5)とfoo(6)の結果が表示されない理由がないぞ。
さて、ここで一旦休憩です。 こんなレスをしながらも、 俺は、次の解説はどんな感じで解説しようかとか、 今晩の夕飯は何にしようか。とか考えています。 こうやって、あることをしながら、 別のことを考えることは、 プログラミングでも重要な気がします。 ではまたね。
>>298 素晴らしい!
全く理解できてないことを明確にした素晴らしい説明だ
「一番肝心な部分の説明を全部省略」という極上の素材に「int 型を定義」とか「理論演算子で考える」
とか絶妙なスパイスを効かせて、最後に「これでいいかい」で締める
最高だよwwww 腹筋が崩壊した
説明できないから逃げるのかw
分かりやすい
休憩明けは
a=a+(b>20)
と
>>286 の説明をしてもらおうかねぇ
>>304 逃げるなクズ
お前の晩飯とかどうでもいいんだよww
>>306 分かってんなら、C言語では必ず後ろから前に計算が起こるとか恥ずかしいこと言ってんな。
>>306 何と何の優先順位かなぁ?
たぶんこいつは
>>280 のサイト見て必死で理解しようとしたんだろうなww
>>306 優先順位は関係ねーよ
「&&」が持つ特性の問題だ
>>306 ヒント じゃねーよww立場わかってんのかwwwww
あとちょっと前の自分と矛盾したこと言ってるよな?人格もいっぱいあるの?ん?
wwwwwwwwwwwwwwww 現在爆笑中ですw あんたたち本当に面白いね(^^ 釣という言葉を知ってるかい?
後釣り宣言ほど滑稽なものはないねww
これはね。 グローバル変数を使っているのです。 int foo(int a) { printf("%d\n", a); return a; } ↑ これは静的領域を使用。 { int a; a = foo(1) && foo(2) && foo(3) && foo(4) && foo(0) && foo(5) && foo(6); printf("%d\n", a); return 0; } ↑ こっちはスタック領域を使用。
さて釣りなら釣りでちゃんと説明できるってことだよね? ん?もしかして理解できてるってことが釣りなのかな? 大丈夫だよみんな君が理解できてないことは知ってるからw
鳩山の「今日は大変いい天気です」を思い出したよ 演算子に触れてねーなwwwwww
グローバル変数ってのは、 どこでも呼び出せると言ったよね? なので、スタック領域の各fooには、 グローバル変数を呼び出しています。 foo(0) ↑ 多分、ここで引っ掛けるつもりだったのかな? 甘いね。
えっ グローバル変数とか 何言ってんのこの人
どこにグローバル変数があるんだ?
誰がグローバル変数の話しろって言ったんだよwwwwwwwwwwwwwwwwww
もう超理解すぎてついていけねぇ グローバル変数とか無いしw
>>322 グローバル変数の幻覚が見えてるからはやく病院に行こうね
演算子の優先順位(および結合性)とオペランドの評価順序は別問題なので、「優先順位」は答になってない もちろん「グローバル変数」も無関係 つかグローバル変数なんてひとつも出てこない。
すごいな 俺らは >つまり、C言語の計算は、 >「後ろから前に向かって」考えるからだよ。 を否定するための問題かと思いきや さらに右斜め上のグローバル変数とかの間違いをしだす
グローバル変数があると言い張るなら、どこで宣言してるのか教えてくれるかなー?^^
ほらw これが釣だよwww 今回は後だし釣じゃないよね?w
釣りをするときはメール欄か縦読みで「釣り」って仕込んでくれ。
後出し釣りの意味すら分かってねえ基地外がいるぞ
いやいや。 ごめんごめん。 冗談です。
ほら、あれだ、main関数内で宣言した変数は全部グローバル変数になるコンパイラでも使ってるんだよwwww
ほんとにグローバル変数があるのか見直しちゃったじゃないかw まさかint foo(int a)のaがグローバル関数とか言うなよ?w
結論:理解できてない
int a; ←たぶんこれをグローバルだと思ってるんじゃね?
グローバル変数云々が「釣り」だとしたら、後出し釣り以外の何物でもないぞ というかさ…釣りだろうがなんだろうが、結局のところ kazuki クンが正解を出せていない ことに変わりはないわけなんだが 本当は正解がわかってるけど「釣り」としてわざと間違った答えを出した のなら、その「本当はわかってる正解」を提示できるはずだろ。
>>338 違 い ま す 。
さて、メシにするか(^^
逃げたwwwwクソワロタwww
相変わらず逃げ足だけは早いね
まあ、これでこのスレの住人のレベルが ハッキリしたことは間違いない。
そろそろ飽きてきたな。
俺はレスをしながら、 あなた方のレベルを探ってるの。 でも、もう十分わかったから、もういいよ。
じゃ、どれぐらいのレベルなのか言ってごらん
そう思っているのは自分だけ 可哀想な子だね
そもそも探ってどうすんの?
>>348 自分のバカさを確認するためとか、
>>1 がマの中でも最底辺であることが確認されたわけだが。
ごめんなさい。
>>347 上のあの人は超上級者レベルの人
多分、現役のゲーム会社のプログラマーじゃないかな?
そもそも出たばかりのDirectX11が理解できていることに驚いています。
多分、日本でも数人しかいないんじゃないかな?
そして、あなた方は、中級者レベル。
現役プログラマーにはとても見えないということ。
そして、俺は、初心者でも中級者でも上級者でもない。
ふわふわした存在。
上級者レベルのことを知ってるかと思えば、
入門者レベルのことも知らなかったりする。
これが俺の分析結果。
とりあえず、俺は「素人」ってことでいいでしょ。 その方が解りやすい。うん。
356 :
名前は開発中のものです。 :2010/09/20(月) 19:18:14 ID:+PtyrZu+
みんな。もっと生温かく見守ってあげようよ
脳みそが少なすぎてふわふわしてるのね
foo(int a) の a がグローバルだと思ってるのなら、予めグローバル変数で a を定義しておいたらどうなるのかな #include <stdio.h> int a = 5963; // グローバル変数 a を予め定義 int foo(int a) // この a がグローバル (上の a と同じ) だと思ってるなら { printf("%d\n", a); return a; } int main() { int b = foo(1) && foo(2) && foo(3) && foo(4) && foo(0) && foo(5) && foo(6); printf("b : %d\n", b); printf("a : %d\n", a); // その幻想をぶち殺す return 0; }
無理かな
こいつの頭の中ではDirectXだけでプログラマーのレベルが決まるんだな
帰ってきたらなんかほざいて逃げとるwwwwwwwwwwwwwwwwwwwww じゃあどれをグローバルだと思ってたのかお聞かせいただきたいところだな
ちょっとまて >上級者レベルのことを知ってるかと思えば、 ← >入門者レベルのことも知らなかったりする なんか上級者っぽいこと言ったことあるか?wwwww
注: 本に書いてあることを知識として知ってるだけです 理解に達してないので応用は出来ません 御注意ください
突っ込みどころ多すぎるけど
>>176 「ifより条件分岐」ってエスパーするとswtich文?
それやめた方がいいよ、BASICみたいな書き方してるならまだしも
>>363 好きなだけ言ってろw
全部、解説していくから。
本当はC言語を飛ばして、
DirectXから解説しようと思ったけど、
それではいけないと思ったので基本の基本であるC言語から解説を始めることにしました。
結果、それは大正解だった。
自分の解釈間違えに気づくことができましたしね。
俺は着実に力を付けていっています。
いつか、あなた方を越えてるかもね。(^^
>>364 DirectXのメインループ内で、メッセージ処理する時しか使ってないからだろうな
367 :
名前は開発中のものです。 :2010/09/20(月) 19:33:23 ID:+PtyrZu+
なかなか珍しい敗北宣言だな。あれだけ罵っておいて謝るなんて
着実に力って、まだハードルらしいハードル出てきてないじゃん。
>>365 致命的な解釈間違えしている分際で解説しようとしてんじゃねーよ
>>22 で「ATOM」とか「BOOT」って言ってて
>>25 でATOMに関して突っ込みしてくれた方がいたけど
もしかしてBOOTじゃなくてBOOLって言いたいのかしら
眼科行った方がいいよ!
C言語解説したら解釈間違えに気づいたんで結果大正解 オナニーに付き合わされる初心者の気持ちも考えてやってくれよ
winmainとか言い出したら発狂しそう というかStandard Input/Output Headerを越えられそうにないな リアルタイムなEvent-Driven設計とか見てみたい すたじおえっち! おまじない!
KazukiさんのおかげでC言語に対する勉強意欲が湧きました!ありがとうございます!
間違えたことに気づいても直そうとしないから意味ないな
,,--'''""`ヽ' -/"~  ̄`ヽ、
/ ヾ''" ~`ヽ
/ _,,,... ヽ;: /""ヽ ヽ
/ ;'" "\ l /;:;;:::-'''ヽ, i
/ /,,--:-'''''"~:::::::::::::::::::::::::::ヽ, .|
/ /;:;;:::'''::::::::::::::::::::::::::::::::::::::::ヽ ヽ
| |::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ |
/ ;/ :::::::::::、::::::::::::::::::::::::::::::;/ ヽ i,
/ ;:;:ヽ ::::::::\::::::::::::::::::::::::/ ヽ i,
i / )( ::::\;;::::::::::::;/ ,,-'''ヽヽ ヽ
| | ⌒ ,;''"'''-;,_ \l,::,l/ !" ●) | |
>>1 俺のサイトに糞スレ立ててんじゃねーぞ、糞ガキ!
| |. ( ● >>><< `"'''''' | |
| ;:| "''''''''""^ \ | |
| ヽ. ゝ( ,-、 ,:‐、) | |
| /ヾ.. / ,--'""ヽ | | ___,,,:--'''''"
| | .//二二ノ""^ソ | | _,,,..::---'''""""~~
.. | `、ヽ ヘ`\┼┼┼ ,!ヽ --==ニニ二,
| ヽ\ \"ヽ-;:,,,,,,ノ / / | "`''''''-----:;,,,,,,,,,_______,,,,,,
| l `ー、_ \,,,,,__,,,ノ /ヽ./
ヽ. :人 ヽ-、 ∴∵ / |ヽl
/;:;:;:;;:;:;: _/ `ー-、 "'====---''",.-'" \ー---
,.-'" \: \ .,.-''" |
俺が作ったゲーム動画をさっき見てきたんだけど、 あれ見てたら、 スターソルジャーが作りたくなってきた・・。 よし。 ゲーム第一弾は、スターソルジャーを作ってみることにします。(^^ スターソルジャー2というタイトルにすると、 さすがに版権ものでダメだと思うので、 「スターシューティン」とかのタイトルにしようかな?(^^ まずは、ファミコンゲームから挑戦しよう。 それが出来たら、東方っぽいシューティングゲームを作ってみたいと思います。 もちろん、解説しながら作っていきます。
なんでもいいからさっさと作って ソース公開よろ
int a=0; a=a+(b>20); はそんな突っ込む所ではないと思う
あれか、演算子に関しては「小学生でもわかるように」説明しなきゃないのか…
12 / 2 * 6 = ?
この場合、除算と乗算の優先度は同じなので左から順に計算します
12 / (2 * 6) = ?
この場合、除算と乗算の優先度は同じなので左から計算されます"が"
括弧内の式が優先されるので括弧内の式を先に計算します
また加算と減算の優先度は除算、乗算より低いので
「12 + 2 * 6」の場合は「2 * 6」が先に計算され
「12 + 12」として計算します
なお算術演算子は加算<減算<乗算<除算<剰余の順に優先度が高くなります
これはプログラム言語においても例外ではありません。ないよね?
よって
>>264 の
>>C言語の計算は「後ろから前に向かって」考える
というのは間違いになります
こいつパクり根性が染み付いてるしコード書けるなんて誰も信じてないから ソースでもバイナリでも出たら出展捜索大会だな
>>380 何を言ってんだよww
さて、そろそろ次の解説でも作るとしよう。
俺のサイトでは、
新たな解説を作ってるときは、
毎回、準備中の動画をトップに表示させておくことにします。
さっさとゲーム作れよ
>>1 のような勉強の仕方でマトモなゲームなど作れる訳がない。
せいぜい人のものをパクってリソースを差し替えたりパラメータ
を弄るぐらいが関の山だ。
ことゲ製に限っては、勉強の仕方に近道などない。
今、公式サイトのアクセス解析をしてみて驚いた・・(^^;
すげぇな・・これは・・。
とんでもないアクセス数になっています。
よし!みんなの期待に答えるため、
俺!がんばる!!
>>373 ありがとう。
励みになります。
シューティングはもう出来てるって言ってたじゃん なんでまた作るの? 3Dのシューティング作っちゃったから?
>>385 お前の様にならないためにって意味だよ
驕れんな
>>382 解説できるレベルじゃねーだろはやく過去作のソースうpれカス
>>386 うん。まだちゃんとしたゲームは作っていません。
自機を動かして、
弾撃って敵をやっつける。
こんなのしか作っていません。
ゲームというのは、
ちゃんとスタート画面が表示されて、
ボタンを押せば、ゲームメイン画面が表示されて、
敵をやっつけたら点数が追加されていって、
最後までクリアできたら、エンディングが表示される。というもの。
そういうのを丸々一本作ってみたくなった。
東方はちょっと難しいから、
まずは、ファミコンゲームのシューティングから行きまーす!
お得意のコピペで龍神録のソース持ってきていじれば東方っぽいもんくらいなら簡単に作れるぞ? ああ、DirectXを直接叩くんでしたね^^
>>382 >俺のサイトでは、
>新たな解説を作ってるときは、
>毎回、準備中の動画をトップに表示させておくことにします。
さすが著作権に厳しいkazukiさん
>>387 そんなこと言うなよ。
こんな敵だらけのところで
レス付けるだけでも、
2chに慣れてない人からすれば、結構勇気いると思うよ。
そんなキモチを察して「ありがとう」という言葉をその人に送っただけ。
>>389 数ヶ月かけてようやく基本的なシステム作り終わったから
俺もシューティング作ってみるわ!
がんばろうぜ!
シューティング作るの?じゃあ俺も! と言いたいところだけど素材が手間だな…
まあ実際やる気が出たってのは確かなんだがな
真性馬鹿は何についても馬鹿なんだな
ここだけ勢いがダントツとか 終わったな
>>379 を頑張って分かってもらえるように書いたのにスルーされた><。
このままじゃ
>>1 の3DRPGにおけるダメージ処理とかバグっちゃう!
>>379 ごめんよ。
縦読みしてました。
「後ろから前に向かって」は、俺のオリジナルの解釈です。
多分、こんなこと言ってる解説はどこにもないと思う。
でも、俺の場合そうやって考えた方が解りやすかった。
計算は、「後ろから前に向かって」が基本で、
そこに、各演算子の優先順位が加わって順番が変わるのです。
*は+より先に計算される。
( )を使った場合は、( )の中を先に計算する。
それを=の左に移すのです。
a = a +(b+1)
↑
これを
a + (b+1) = a
↑
こんな感じで算数みたいに考えてはいけない。
小学校や高校までの計算式で考えると、
=の左右は同じって意味ですね?
>>400 ふむ
>>381 さんが軽く教えてくれてますが
プログラムにおいては「=」は代入で
算数・数学における「=」はプログラムにおいては「==」となっております
故に算数・数学における「12 / 2 * 6 = 36」は
プログラムにおける「36 == 12 / 2 * 6」と考える事が出来まして
文章で説明するなら、12 / 2 * 6 = 36は
左から順に12 / 2を計算した後に6と乗算した結果は36と「等価」であるとなります
文章で説明するならば、 a = a + (b + 1)は
b + 1を先に計算した後にaと加算し、その答えをaに「代入」するとなります
よ!
C の = は代入演算子であって数学の等号とは違うものだってだけのことで「後ろから前に云々」とは全然関係ない話だわな
a = a +(b+1) は a ← a +(b+1) このように解釈する。 この←は、「代入」と呼ぶ。 矢印がASCIIコードに無いから 代わりに「=」を使う。 イコールの場合は、「==」 これがC言語のルールです。 ルールを守れなければ、違法エラーになります。
小学校や中学校でプログラムを書いている子もたくさんいるから、 あまりにも変なことを書くと、ガキに馬鹿にされるよ。
kazukiはエターナルフォースブリザード打ちすぎだろ
>>403 いや。だから、
←
でしょ?
後ろから前に考えているじゃないですか。
=が代入演算子って説明だと、
a = a +(b+1)
↑
この場合、左のaを右に代入してるの?ってなる。
もっと噛み砕くと、
1 = a
こんな計算式は存在しない、
でも算数や数学では存在する。
素人はこんなところで疑問を感じるものなんです。
小学校や高校で、
そうやって教わってきたからね?
kazukiは中学校を卒業してないように思う。 ヒキコモリで部屋に閉じこもっていたんでしょ コンパイラ内部で後方からスタックに積んで、2パス目に前方から処理する 手法も有りますが、C言語はC言語のルールで書かないと違法です。
まあいいよ。 こんな基礎的なこと、どうだって。 入門者に理解させるための工夫と思ってください。 ふう。今日はもう疲れた。 今日はこれで落ちます。 いつかもっとレベルの高い会話をしていることを、 切に願います。
>>407 代入演算子の演算が右から左ってだけで
計算順序は左から右だから
ありえん(笑)
基礎的な事が間違ってるから指摘受けてるのに
単に代入演算子の優先順位が低いから右からやってるように見えるだけじゃねぇのけ? とりあえず足し算引き算より掛け算割り算のほうが先に計算されたよね? 演算子ごとの優先順位の話であって基本は左から右じゃねぇのかな?
入門者に誤解させるための工夫だろ
入門者の工夫とか言って嘘教えるなよ。 数学(算数)の=はC言語では==を使うようになってます。 そしてC言語の=は「=の右側の計算結果を左側の変数に代入する」という記号です。 これでいいだろ。無理に数学(算数)の=と同じものだって教えるなよ。
どうでもいいよそんなことってこれまでに何回言ったw 前スレでレベルの高い会話()って結構あったけど kazukiは理解できなくてスルーしてたじゃんw
「代入」の概念は、C言語参考書の始めのあたりで解説するのですが、 それをまだ理解していないのでしょうね。 Kazukiさんは、日本語が不自由なのでしょうか?中国人のような印象があります。 中国系のフォーラムは主とか使いますし、考え方も中国人に似ています。
しかし
>>280 のサイト見た上で
後ろから前って言ってるなら
ほんと、プログラマの才能皆無だな
>>410 氏も言ってるけど
代入演算子は右オペランドの値を左オペランドに代入します
変数 = 式 という形をとり、式によって求められた結果を
変数が示すオブジェクトに代入します
この事から、算数・数学的な12 / 2 * 6 = 36を
プログラム的な36 = 6 * 2 / 12と言う風に考えると
勘違いしたのではないかと思いました まる
420 :
名前は開発中のものです。 :2010/09/20(月) 22:11:39 ID:C/DXzIIZ
>>410 右から左ってよりも、右辺から左辺という言い方の方がいいかもね
プログラミング言語の代入の=は方程式の=とは違うから、最初はa=a+1いう表現に自分も戸惑った
とても聞き分けの悪い子をもった親の気分だ。
聞き分け悪すぎるだろ
>>416 俺にとっちゃ、今やってる会話レベルは、
本当に、どーでもいい。
ホント、マジで。。
敵意を抱かないようにして教えてみたけど だめでしたー
データ型も理解していないように思われます。 基礎はきちんと覚えないといけませんよ
>>423 だからお前はこの程度の会話レベルですら
ついてこれていないって事だよ
Kazukiが理解できてないと分かった事 ・定数 ・代入 ・演算順序 ・グローバル変数
あとenumも理解してなかったな マクロとか言ってたし
前スレで指摘されるまでは b + 10 でbに10が代入されると思ってたくらいだからな
>>428 そういうことは、次の解説を読んでから言ってほしいね。
また重要なことを解説していますので。。
明日中にはアップされてると思うよ。
>>427 それは単項の「書き方」とか「使い方」の説明なのです
プリプロセッサも理解してない。
>>430 俺的にはそれをまだ理解してないから
bをaに代入するのに
a=a+b
なんてコードを書いたんだと思ってる
こんな馬鹿が世の中に入るんだなー 基本がどうでもいいとか言っちゃったよ理解できてないくせに
>>434 なんでだよ。
a=0;
b=0;
a=a+b
これなら、
1.bに0を入れる
2.=の右のaに0を入れる
3.計算結果を=の左のaに入れる
って考えれば後ろから前に向かって考えれるじゃないか。
知恵遅れであることは、問題にしません。 間違ったなら、正しく修正しなければなりません。 そして、ルールは守らなければなりません。 どちらかと言うと人間としての躾が出来ていないようです。
代入演算子特有の話を「C言語では式は後ろから前に計算される」と書いてしまうのがkazuki流 代入演算子の話に限っても、= の左辺値と右辺値がどっちが先に評価されるかは決して「後ろ から前に」ではないはずだが (多分、処理系依存)。 でもって、「後ろから前に」を仮に認めるとしても、それが a = b>20 と書かずに a = a + (b>20
今から風呂入ります
>>437 とりあえず学習能力と説明能力に致命的な障害があることはわかった
代入演算子だけは(他にあったらごめんだけど) 変数 = 式のように書くのだよ! でも「式」は算数、数学と同じように評価するのだよ! 代入演算子の「演算子」って言う言葉に惑わされちゃいけない!
>>439 途中で書き込んじまった。
a = a + (b>20)
と書いてしまうことの理由にならない
単純に a=1-4; ではどうよ? 4-1じゃなくて1-4だよね?
>>437 なんでだよ
って言いながら
bをaに代入する時に
a=a+bとする理由に全くなってないんだけど
俺は前までは a=0; b=0; a=a+b こんな場合、 1.bに0が入る 2.それを=の右のaに入れる 3.最後に=の左のaに入れる と間違えて理解していた。 これが解っただけでも 一歩前進です。 大人の階段を一歩ずつ上っていきましょう。
なんかほんとに質問の意味がわからない様なので すごーくわかりやすく書いてみると bをaに代入する時に どうしてaとbを足してaに代入したの? って事
>>444 うん。そうだよ。
a=4;
b-1;
a=b-a;
この場合は、
1.aに4が入る
2.bに1が入る
(この時点では計算していない)
3.演算子の優先順位で計算して
4.最後に=の左のaに答えが入る
int a,b; a = a + b; を考える場合は a = a + bの式を先に評価…つまり「a + b」を先に計算し その結果をaに代入する って事ですね!
そんなに何行も使って力説せんでも「右のa+bの結果が左オペランドのaに入る」みたいなんでいいんじゃね
これは脳内での考え方の問題だと思う。 物には順序があって、 その順番にことは進んでいる。 その順番を言っているんだよ。 まあ、コンピュータの計算は一瞬の世界だけどね。 その一瞬の世界を俺はコマ送りで考えて、より細かく考えているわけです。
あくまでも後ろから前じゃないと気に食わないのかこいつは cの演算は 演算子の優先順に前から後ろに演算するの。 で、代入演算子に関しては右オペランドから左オペランドに代入するってだけ。 順番はあくまでも 前から後ろ!左から右!
>>451 デバッガでトレースしてみたら、演算の順番とか分かるんじゃないか?
これで理解してもらえなかったら俺の説明能力じゃもう無理だ
たぶん + も = も同じタイプの演算子だと思ってるんだろ。多分
つまり、 a=4; b-1; a=b-a; これは、 1.bに4を入れる 2.aに1を入れる 3.計算する 4.=の左のaに答えを入れる は間違い。 1.と2.の順番が違う。 1.aに1を入れる 2.bに4を入れる 3.計算する 4.=の左のaに答えを入れる が、正解。
>>451 だから、根本的に「右から処理する」って考えが間違ってるんだよ。
すべての演算子は基本的には左から処理をしていくんだよ。
その中で優先順位が決まってるってだけ。
>>413 も書いてるけど=の優先順位が低いから逆にやってるように錯覚してるだけなんだよ。
これが物事の順番なんだよ。
訂正 a=4; b=1; a=b-a; ←←← 1.aに1を入れる 2.bに4を入れる 3.計算する 4.=の左のaに答えを入れる
>>449 = の左側 a と右側 a + b のどっちを先に評価するかは処理系依存
ただし = の左側と右側では評価の仕方が違う。
>>451 コマ送りで考えるのが悪いとは言わん。ただ考えが間違ってるだけで。
= 演算子は
(1) 左辺と右辺をそれぞれ評価 (順番は決まってない)
(2) 左辺に右辺を代入
(2) の働きを「後ろから前に」とどうしても表現したいなら別に構わん。ただそれは代入演算子に
ついての話であって、それを「C言語では式は後ろから前に計算される」と一般化してはいけない
>>452 前から後ろに計算されることが(おそらく)多いだろうけど、それは決まってはいない。
もうだめだこいつwwwwwwwwwww
>>456 なんで
a=4なのに説明では1になってるの?
とか
b-1じゃなくてb=1だろ
とかは置いとくとして
下が正解だ
1 : a=4; 2 : b=1; 3 : a=b-a; 1.aに4を入れる 2.bに1を入れる 3.b-aつまり1-4を計算 4.=の左のaに答え(-3)を入れる
>>459 もうめちゃくちゃだな
「aに1を入れる」とかどっから出てきたんだ
a=a+1 このインクリメントがわかりづらかったら。 c←a+1 a←c このように考えてください。 CPU内のアキュムレータに一時保管するように、 インクリメントは多用するから、使えないとコードが書けませんよ
失礼・・。 さらに訂正 【正解】 a=4; b=1; a=b-a; ←←← 1.aに4を入れる 2.bに1を入れる 3.計算する 4.=の左のaに答えを入れる 【間違い】 a=4; b=1; a=b-a; ←→→ 1.bに1を入れる 2.aに4を入れる 3.計算する 4.=の左のaに答えを入れる この考え方は間違い。
>>460 あれ同レベルの演算子の処理順って処理系依存だったのか
じゃあそこは間違ってたごめん
もう何言ってんのかわかんねww
a=1-4; 右からやったら答えは3でしょ? 左からやったら答えは-3でしょ?
すごく細かい話だけど。 これがすごく重要ことなのよ。 これを理解するのに、かなり悩みました。
>>470 理解出来てないから、もう少し悩む必要があるね。
>>469 1-4は、-3は当たり前じゃないか。
そういうことを言ってるんじゃなくて。
>>472 何が言いたいんだ?
右からやったら4-1になっちゃうじゃないか
474 :
名前は開発中のものです。 :2010/09/20(月) 23:00:27 ID:UJfhMPaM
ソース: #include <stdio.h> class Baka { int baka[10] ; public: int & operator + ( int i ) { return baka[i] ; } } ; int main(void) { Baka baka ; baka + 1 = 2 ; printf( "%d\n", baka + 1 ) ; return 0 ; } 出力: 2 やってみそ
1-4 →→ 1-4 ←←
> 1 : a=4; > 2 : b=1; > 3 : a=b-a; 1. a に 4を代入 2. b に 1を代入 3-1 = の左辺 a と 右辺 b - a をそれぞれ評価 3-1-(1) 左辺の a を左辺値として評価→ 変数 a のアドレスを取得 3-2-(2) 右辺の b - a を右辺値として評価 3-2-(2-1) - の左辺 b を評価 → 1 3-2-(2-2) - の左辺 a を評価 → 4 3-2-(2-3) b - a、つまり 1 - 4 を計算 → -3 3-2 3-1で求めた左辺値に右辺の値 -3 を代入 (変数aのアドレスのメモリに -3 を格納) *3-1-(1) と 3-1-(2) のどっちが先jに実行されるかは決まってない *3-2-(2-1) と 3-2-(2-2) のどっちが先jに実行されるかも決まってない もちろん 1, 2 でも 3 と同じように細かい過程があるけど省略 あと 3-1-(1) はこの場合は a のアドレスが出力されるコードに組み込まれるだけで、左辺値 を評価するようなコードが出力されることはないはず
逆ポーランドで計算しますからね、内部的には色々あります。
>>379 亀だけど、初代HSPは優先順位無視するwww
>>467 そうじゃなくて
a = x - y - z;
って式があったときに、- は左結合だから
a = (x - y) - z;
になる。だから二つの - 演算子で左側が先に計算されるのは処理系に依存しない。
だけど、この式の中の x, y, z の評価の順序は決まってない。
Kazuki == 初代HSP こうゆうことですね
知り合いのHSP使いは変な勘違いばかりしてる
>>480 あ、結合ってそういう事か(恥さらし)
てことはそこは演算子の結合規則に従うって事でok?
+、-、*、/ などの演算子は、前から後ろに向かって計算します。 これが演算子の優先順位、 左から右へ でも、全体の計算は、右から左に考える。 つまり、 =という演算子は、 +、-、*、/などの演算子みたいに 右から左に考えるのではなく、 左から右へ考える。 一つ一つの演算子には、 計算する優先順位があるのです。
訂正、 =という演算子は、 右から左へ +、-、*、/という演算子は、 左から右へ 失礼しました。
>>466 #include <stdio.h>
int foo(int a)
{
printf("%d\n", a);
return a;
}
int main()
{
int a, b;
a = 4;
b = 1;
a = foo(b) - foo(a);
printf("%d\n", a);
return 0;
}
これ実行してみ
処理系によって違う答えが出る可能性があるが、x86 で VC なら
1
4
-3
になるぞ。
>>484 >でも、全体の計算は、右から左に考える。
そうなってるところってある?
>>466 え、っと
int a = 4; // 変数aを宣言し初期値に4を代入
int b = 1; // 変数bを宣言し初期値に1を代入
a = b - a; // 変数aに式「b - a」つまり「1 - 4」の計算結果を代入
ですよ! 宣言や初期値の順番とか関係ないない
「式」に重点を置いて!
とかいて
>>484 で(´・ω・`)
あるのです。 ってさも自分の知識のようにひけらかすあたり人に嫌われる方法を心得ているな
1スレ半使って3DRPG制作は一歩も進んでないのか
うー
なんかがっつり恥さらししてて恥ずかしい
>>264 が間違ってるってのは分かるけど
自分も理解まつがってた…
>>486 脱線するが、このコードで違う答えが出る処理系って何かあ心当たりある?
さすがにこの程度の処理はCの規格で保証できるでしょ。
この処理結果を保証できないのであれば、それはコンパイラのバグかと。
printfの出力先のttyが特殊だったりすれば見た目上の表示は変わるかもしれないけど。
もっと細かく考えてみようよ。 int a = 4 これは初期化ですね? コンピュータがこれを理解する時は、 「4は、変数aのint型に入れる」 という風に後ろから前に向かって読んで理解しているのです。 これはどんなに長いコードでも一緒だと思うよ。 でも、演算子には優先順位があるから、 順番が変わってくる。
>>493 ×4は、変数aのint型に入れる
○4を、int型の変数aに入れる
C言語がこういう文法になっているのは、 英語圏のアメリカで誕生したからだと思う。 ほら。 英語の場合、先にメインを言ってから 文法を書くでしょ?
なんで脳内妄想をここまで頑なに信じられるんだろう
I think that Kazuki is very foolish.
あ、そっか 代入演算子の演算順考えれば単純に左から右じゃないって分かるじゃねぇか…>俺 おうふ
>>493 1.intを宣言します
2.宣言した変数はaです
3.変数aに代入します
4.代入する値は4です
I love you ↑ これは、「私は好きだあなた」という意味 日本語なら、 You Love I になってないとおかしい。
間違った・・w 日本語で考えると I You love ですね? 「私はあなたが好き」
中学生かよ
>>493 >でも、演算子には優先順位があるから、
>順番が変わってくる。
んで、その優先順位を変えたいときは()を用いることね。
> 「4は、変数aのint型に入れる」 「変数 a のint型」とかいうトンチキな言葉を使わないと「後ろから前」説を維持できないのか int型の変数 a に 4 を代入する で問題ないだろ
I love you これを日本語の文法でそのまま訳すと 「私 好き あなた」 でも、本来の意味は、 「私は あなたが 好き」 になる。 C言語もこれと同じ。
お前わざと理解出来ないフリしてんだろ
>>506 そのC言語の文法を間違って覚えてるのがkazuki
もーなんていうか、こんなに一生懸命教えて下さってる方が大勢いらっしゃって… なんか、ほんとありがとう!
よって int a = 4 この場合、一番メインの「int」を主語にもってきて、 最初に書く。 続いて二番目に重要な、「変数a」を書く。 三番目に、「演算子=」を書く。 これは目的語って読んだ方がいいか。 そして、四番目に、本当はメインのはずの 中に入れる「値4」を書く。 英語の文法にそっくりじゃないか。
自然言語の文法なんて超不定だっていう
ねぇみんな中学校の数学で y=x^2+2x+1 って習ったよねって一言言うといろいろと捗るってじっちゃが
int a=4; は 変数宣言の int a; と代入の a=4; をつなげたようなもので 順序にたいした意味はないだろ
>492 横からだが、規格では決まってないと思う(少なくとも古い規格では無し) 値の評価順序(ここで言う関数の評価順序)は決まっていなかったはず だから1,2番目が入れ替わる可能性があるのではないかと ただしいくつかの演算子については規格で決まっている
評価順序みたいなリアルタイムなことは asmで気にすればいいじゃな井
俺、実は中学生の頃に、 親父の書斎に忍び込んで パソコンを勝手に触って COBOL(コボル)のプログラムを組んだことがあります。 もちろん遊びでね? その時、 プログラムって英語なんだな、と思いました。
たかが代入式でこんだけスレ消費しちゃうなんて、 マヌケ過ぎるwww
yをy=x^2+2x+1とする x=2のときのyを求めよ なんかプログラムみたい......
どーしても後ろから前というなら、こういうのは? int a = 0; int a += a++ + ++a;
そもそもの発端である a=b;を a=a+B;と書いたことの説明はまだ無しっと
間違った int a = 0; a += a++ + ++a;
ねぇ数学で「a=b+cとする」って言ったとき これも右から計算しなくちゃいけないのかな......
>>521 a = a + b;だとa = b;じゃなくてa += b;と同じだよね。
>>523 関係ないのにこの説明で
>>1 が後ろから前と言い出してこんなことになってる
>522 そいつは未定義では...
後はkazukiが認める認めない云々の話で結論は出てるのであんまり興味はないな 本人だってどうせわかってるだろうし それよか脱線してないで3DRPG作れよ
「後ろから前」自体は前スレからほざいてたと思う
>>527 たとえ未定義でも大丈夫
ちなみに
>>1 に動作を細かく説明してもらいたい
動かないならその理由も
COBOLで3D-RPG 作りなさいよ、 できるんでしょ
そもそも後ろから前って表現がおかしいんだろ。畑中葉子じゃあるまいし。 せめて、右辺から左辺って言えよ。 で、もう、C言語じゃなくて、Kazuki言語を作っちゃえよ。 代入演算子は、「<==」な。 a <== b + 10; これなら、Kazukiも理解できるんだろ? Kazuki言語は代入の別の書き方として、 b + 10 ==> a; もあり。 つか、普通の人は、そんなこと別に拘ったり躓いたりしないっつうの。
アニメーションでコマ送りで解説した方が解りやすいかな? a=4; b=1; a=b-a; 1.式の右側のaが光ながら4に変わった! 2.式のbが光ながら1に変わった! 3.お!式全体が光って-3になったぞ! 4.式の左のaが光って-3に変わった!! こんなアニメーションを想像してみてよ。 そしたら、俺が言ってることが解っていただけると思う。 てか、もういいよ。 この話題は・・。 いい加減、疲れてきた。(^^;
アホ過ぎてレス付けたくない
主の脳はきっとrofs いつもremount, rwを待っている でもその日は来ない、常にpermission denied
>>515 なるほど。確かにおっしゃる通り。
規格で決まってる演算子の代表は||や&&あたりかな。
if(a != NULL || (*a)())
みたいなコード書くのに不定だと困るし。
閲覧注意 つーかびびった
>>532 悪い・・コボルは、ほとんど忘れた・・。
スペル忘れたけど、
コボルでは、4つのディビジョンを使う。
アイデンティフィケーション・ディビジョン
データ・ディビジョン
プログラム・ディビジョン
あと、一個なんだっかな?
コボルでは、データを入れる器を先に全部定義しておき、
そっから、プログラム・ディジョンで引っ張ってきて使う。
ごめん・・10年以上も昔のことなので、
ほとんど、忘れた・・。
>>534 理解できてないくせになにがもういいよだよ
でもまぁ実際kazuki以外のレスは勉強になるから有益なスレかもしれん
評価順が処理系依存とは知らなんだ
>>534 だから、それなら
>>486 a = foo(b) - foo(a);
1.式の右側のfoo(a)が光ながら4に変わった! (foo(a) が評価されて値4を取得)
2.式のfoo(b)が光ながら1に変わった! (foo(b) が評価されて値1を取得)
(以下略)
で、プログラムの出力は
4 : foo(a) の出力
1 : foo(b) の出力
-3
になるはずだよね。でもそうはならないんだけど (VC では)。
評価順が固定だと最適化の余地がないと言うか とる?ぁるどずさんみたいな人以外はC/C++には高級言語であってほしいわけで
お、光ながらIDが変わった!
俺が中学の頃、 親父はコンピュータ専門学校の講師をしていて、 専門学校のテストとか勝手に盗んで、それを解いたりして遊んでいたな(^^ 書斎の本棚のプログラムの本とか、 勝手に読んだりして、 ある日、親父のパソコンを勝手に触って、 動かなくなって、おれ、涙目・・・ww どうせばれないだろう。と思って、 電源切って黙っていたら、 なぜかバレてこっぴどく叱られたなw(^^; あの頃は、Windows3.1が登場するよりも ずっと前の時代です。 データもペラペラのフロッピーディスクを使っていて、 Aドライブとか、Bドライブとかあった。 きっと今の人は、想像も付かないんだろうな(^^
>>548 本日のKazuki:ID:K3ExNE1u
ガチで30代なんだなぁ
>>548 >あの頃は、Windows3.1が登場するよりも
>ずっと前の時代です。
Windows3.1の発売日
日本語版
NEC版1993年5月12日
Microsoft版1993年5月18日
オッサン乙
30代にもなってこんな事してるのか
3.1のころのWindows、というかx86のUIは腐ってたなぁ Macintoshは今でも通用するGUIで動いてたし、UnixじゃEmacsとかshは今でも現役なのに DOSのドライブレターの評価と言ったら
俺が中学生の頃に初めてコンピュータを勉強してみた時は、 主記憶装置とか補助記憶装置とか演算装置?とか 色々あって、あの頃はよく覚えていたんだけど、 いつの間に、そういう言葉を使わなくなったのだろうか・・。 ああ。でもフローチャートぐらいは、 今でもバッチリ覚えているから、 あとでフローチャートの解説をする予定です。 もちろん、ちゃんと調べてからです。 じゃあ、もう寝よう!!
>>548 >学校のテストとか勝手に盗んで
あのさあ・・・光ながら言わせてもらうけどさ、それやっちゃイカンだろ。
>>534 int b=1;
int a=4;
a=b-a;
これだとどういう順番になる?
計算処理の順云々いうより
>>534 の言い方だと
プリプロセッサでaが4になってbが1になってみたいな解釈してるんじゃね?こいつ。
そういう見方をするとトンチキな解釈の仕方もなんか見えてくるような気がしてきた。
変数はメモリに云々いいながらこんな解釈だとすると絶望的なんだけどねw
全レスにおいてkazukiであることにスキがねぇw
>>553 フローチャートとかBASICの入門書でしか見たこと無い…
マの人は毎日見るのか
>>548 俺は1行表示の液晶が付いたポケコンが最初だったよ。
データ保存はテープレコーダーな。
C++でゲーム作るにあたってフローチャートじゃいろいろキツイだろ UMLとかじゃね使ったこと無いけど
その時代からプログラミングしてて、なんで今こんなことになってるんだ? ちょっと凝ったことやろうとして実用的なパフォーマンス出そうとしたら、BASIC卒業してCなりASMなり使う必要があった時代だろ。
テスト問題もパクってたのかw
>>558 組み込みとか逆にWeb系なら見るんじゃねーかなぁ
statefulで各状態が小さくないといけないよねたぶん
>>559 ( ´∀`)人(´∀` )ナカーマ
俺もだwww プリンタの用紙しかもう持ってないが…
今はグラフィック機能とかCコンパイラ付いてるやつ使ってる。
フローチャート位理解してねえとC++はまず理解できねえだろ
最初のマイマシンが686な俺ゆとり10代 でもm68kの話もできるお
>>564 今はポケコンは使わなくなっちゃったな。
押入れ探せば多分まだあるよ、SHARPのPC-1500。
小学校の頃ポケコンのBASICでプログラムの基本を覚えて
中学高校でBASICの限界を感じてasm混ぜるようになったな。
>>565 ループぶんまわして分岐して戻ってくるだけがプログラムじゃねーんだ
もう
for(x<100){x=x++;};
漏れのG-805はまだまだ現役ですw
>>559 ああ、俺も良く知ってるよ。
ピーゴロゴロゴロー!ってなる奴でしょ?(^^
俺、一応、汎用機のオペレーターしてましたよ。
JCLも組めるぞ!すごいだろ!
JCLなんて聞いたこともないんだろうな(^^
一応、WEBサーバーのオペレーターも経験しています。
Windowsサーバーと、UNIXサーバーの管理者をやっていました。
>>570 # include "pic18f2550.h"
int x=0;
main{
>>572 >ピーゴロゴロゴロー!ってなる奴でしょ?(^^
便所行ってこい
Unixが扱える人間には見えねぇなぁ 汎用機は知らんけど
>>571 いや。
それは・・フローチャートじゃない。
もっと色んなのがあります。
ひし形とか、ドラムっぽいのとか、
ループの解説をする時に、
フローチャートを使わないとうまく解説できません。
なんか今日はめっちゃ流れが早いじゃん どうしたの
主が発狂してるし休日だから あと数学的概念をまたひとつ間違えたから
只今の勢いは、なんと!! 316.4です。 では、寝ます。
俺の目には
>>571 はフローチャートにしか見えないが
なんか別のものなのか?
おい賢者ども 落ちます宣言してから一定数の乙聞くまで落ちられない現象の名前教えろ
582 :
名前は開発中のものです。 :2010/09/21(火) 00:41:33 ID:BKMCcH4a
>>517 COBOLやってたなら、代入くらいわかると思うんだけどね
それと忘れたっていってもCOBOLの代入演算子くらい知ってるよな
知らないっていうならまた大ボラか
>>580 JIS規格以外はフローチャートと認めませんキリッ って事じゃないの?
>>572 こいつ、意地でも自分を優位に見せたいんだな。
こんな意味不明なやつに管理されてたメインフレームに同情するよ。本当ならw
>>576 いや、これだってフローチャートだろ。
>>584 世の中にはSpace - Enterのコンボで固まる汎用機もあるらしいけどな
調べるのめんどくさいのでここで聞きます int型ってのがあるらしいのはここ見ててよく分かったんですが 他にもbyte、char、short、float、double、ってこんな感じで あるはずなんですがこれって何が違うんでしょうか
何が気に食わないって自分以外の他人を自分より分かってないと思いこみ 見下してる感が気に食わない…!
>>pentium byteだったりキャラクタだったりfloating-pointだったりdouble-prescision floating pointだったり
byteは知らないけど、右から文字型、短い整数型、単精度浮動小数点型、倍精度浮動小数点型 具体的には調べた方がいいよ!
だまされんな! 左からだぞ!
右からなら逆じゃないかorz char 文字型 short 短い整数型 float 単精度浮動小数点型 double 倍精度浮動小数点型
#include "mymathconstants.h" int a=0; main() {a=pi; return 0;}
他にも C++の場合なら long (int)、long doubleっていうのもあるけれど 調べて実際に使ってみた方が絶対身によくつく
回答ありがとうございます、やっぱC系の知識だったんですねこれ。 ガベージコレクション対策用途でメモリをなんちゃらかんちゃらするという拡張DLLがあって、 そこにいきなりCharがどうしたlongがどうしたと書いてあったので試しにここで聞いてみました。 あとは色々調べて実践してみます。
数に型があるのはCだけじゃないよ 実数とか言うじゃん
解説まだかな
kazuki30代とか救い様がねーじゃん 一応日本語が通じる分 闇のプログラマーの方がまだましじゃないのか
闇のプログラマーはもっと高貴なお方だから
演算子だけでこの面白発言の数々…w ポインタやクラスになるとどんな迷言が飛び出すかワクワクするぜ
右から左に評価します(キリッ
そういえば「Unixも扱える」んだっけ find --helpの結果ってどうなる? 1) 無視される 2) -- illegal options - --help 3) GNU find 2.54 で始まるヘルプテキスト
よし。じゃあ、今回の解説はこれでいこう。(^^ これで「後ろから前に向かって」がうまく説明できると思う。 今から、解説用画像を作成します。 数時間後にはアップされてるかもね(^^ おたのしみに。
>>602 いや、俺はUNIXサーバーの管理者(オペレーター)をしてただけだから
UNIXのプログラムは知らないよ。
オペレーターとプログラマーは全然違う。
じゃあ、皆さんにオペレーターとは、
実際に、どんな仕事をしているのかを説明しよう。
オペレーターというのは、
汎用機(大型コンピュータ)やサーバーの管理者です。
では、実際はどんな仕事をしているのかと言うと、
マシンルーム、サーバールームに入ってランプをチェックするだけです。(^^
一覧になった表があって、
そこにチェックする項目がある。
あるサーバーのラックの前まで行ったら、
鍵でラックを開ける。
そして、上から順番にランプの色をチェックする。
緑ならOK、オレンジならNG。
各ランプの横には@こんなテプラが貼ってあって、
それを一つずつチェックしていく。
一つのラックにチェックする項目は、 20個以上もあって、 そんなラックがたくさんあるので、 全部チェックするのは大変。 全部のサーバーのランプをチェックするには、 20分ぐらいはかかる。 たくさんの鍵をジャラジャラしながら、 サーバールームを歩き回ってるわけですね。 チェックの他に、月、水、金など 決められた曜日の指定された時間にデータをテープに保存するような仕事もあります。 そういった、一連の作業を、 一日に、5回ぐらいやります。 これが、オペレーターの仕事です。 やり方さえ覚えれば中学生でも出来る。 チェックする以外の時間は、自由時間です。 好きなようにインターネットをするもよし、 本をするもよし、ゲームをするもよし。 俺はそんな時間を利用して、 HTMLなどを勉強してWEBデザイナーになったのだよ(^^
こんな簡単な仕事でも月給は結構高い。 28万から30万以上。 だって、大手ですから。(^^ でも、残念ながら こういう特殊な仕事はハローワークとかでは 求人を募集していないんだな。 そういう仕事だけを扱ってる特殊な機関があって、 そういうところで募集をかけています。 これを知ってるのは業界人だけです。 あ。今言った仕事内容は、実は企業秘密だったりするから、 俺が言ったことは内緒にしておいてね。(^^; なので、オペレーターはプログラムの知識ゼロでもなれます。
ああでも、 俺、昔、LindowsOSを使っていたことがあったから、 少しぐらいのコマンドなら知ってるよ。 そんなOS聞いたこともないだろうな・・(^^ では、作業開始!
>そんなOS聞いたこともないだろうな・・(^^ 逆に有名じゃね?M$とごたごたあったし つーかLinspireとか糞だろwww 使った事無いけど
今更まとめ見てきたけど、酷いね… もう触る気になれないや
まさか「見たことがあるだけ」とは思わなかった 阿呆すぎる
>HTMLなどを勉強してWEBデザイナーになったのだよ(^^ Webデザイナー(笑) なんだよあのセンス0のサイト テンプレートのまんまじゃないか
カウンター付いたのか。 取り敢えずブロックしといた
カウンタなんて不要なんだけどな、アクセスログ見ればいいだけだから まぁWordPressのセットアップが関の山っていう…
>>613 >HTMLなど(が存在すること)を勉強<<ナガシヨミ>>してWEBデザイナーになったのだよ(^^
マジレスとなって恐縮だが、
>>605 〜607の
> これが、オペレーターの仕事です。
> やり方さえ覚えれば中学生でも出来る。
これだけは見過ごせなかった。
初心者や学生に管理者の仕事が本当にこれだけだと思われては困るので、
本来見回り以外の時間の使い方について、ちょっと思いついただけでも列挙する。
・定時のダンプや異常検出や異常原因の切り分け方法の自動化を行い、
コストを削減しつつ、障害発生時のダウンタイムを短くし、
開発部隊への十分なデバッグ情報を提供出来るようにする
・CPUやIO負荷、メモリやディスク使用量のピーク値や統計値を収集し、
顧客に将来の機材の更新タイミングや契約変更の提案が可能となる資料を作成する
・障害発生原因を分析し、保守部品の適切な在庫管理を行い、
コスト削減を検討する
・ハードウェアやソフトウェアのバージョンアップに追従し、
機能の変更や、信頼性の評価、使い方の確認を行い、
試験系を用意して、自社で扱える分野を増やす
「中学生でも出来る仕事しか自分は出来ません。
難しいところは信用されていないので誰かがこっそり尻拭いしてくれていました。」
って自分で無能をアピールしていることに気づかないかね?
本当に中学生でもできる仕事なら、そもそも28万〜も金払わねぇよ。
それを自分の能力不足とプロ意識の欠如を棚にあげて、中学生でも出来る呼ばわりするとは
甚だ周りが見えていないとしか言いようがないな。
長文すまん。
>>617 ずいぶんレベルの高いオペレータだなぁ
俺が前関わってたシステムのオペレータにはそんな人いなかったわ〜
システム開発部隊が作ったマニュアルに従って作業するのが仕事で
マニュアルに無かったら開発側に連絡が来る
てか、それはオペレータって言うより開発チームのインフラ部隊って感じじゃね?
場所によって呼び方違うだけかもしれんが
たぶん
>>1 は俺が関わってた人たちの仕事みたいな感じだと思う
求められるのはrogue operatorなんだな
ふう。。 ようやく、全ての画像が完成した。 あとは、これを切り抜いて記事を書くだけです。 多分、これを読めば、全ての誤解が解けると思うよ(^^
>>617 え・・(^^;
いやまあ、そうだけど。
そんなこと書いていいのかい?
ガクブル・・。
社外秘情報だろ・・それ・・。
まあ、実際のオペレーターはもっと色々やるけど、
そんなのたまにしかやらないじゃないか。
汎用機の場合は、TSS端末を叩くし、
JCLでJOBキックさせるし、
サーバーの管理者でも、
よく似たようなことをします。
でも、そういうのはマニュアルがあるんだし、
その通りに打ち込んでいくだけでしょ?
そんなことよりも、
そんな細かいことを書いちゃいけない。
あんたの上司が見たら、
メチャクチャ怒られるぞ(^^;
※このスレに小学生がいるようです 探してみてね!
>>622 >社外秘情報だろ・・それ・・。
一度、どこでもいいから就職してみようよ
このままだと死ぬまでニートだよ?
俺も、最近、よく思うんだ。 俺はオペレーター時代に、 WEBを勉強してWEBデザイナーになった。 あの頃は、インターネット全盛期だったし、 インターネットにすごく興味があった。 でも、あの頃にプログラミングを勉強していたら、 きっと違う未来になってたのかな・・。とか思って、 ちょっと、もったいないことをしたな・・。と最近、少し思い始めた。。 多分、昔のプログラマーは、 オペレーター時代にプログラムを勉強したんだろうね。 まあ、今は学校があるけどさ。
>あの頃は、インターネット全盛期だったし、 今は衰退してきている訳ですね
君はまず中学と高校できちんと西洋科学を勉強すべきだったと思うよ
でも! WEBを勉強したからこそ、 今の俺が存在するわけで・・。 どっちが正解かどうかなんて、 誰にも解らんだろう。 俺は汎用機のオペレーター、WEBサーバーのオペレーターを経て、 ちっこいWEB会社に就職してから、 独立しました。 多分、君は違う道を選んだのでしょう。 そんな別々の道を歩んだ者が、 こんなところでバッタリ出会ったのです。 なんか運命を感じるな。俺(^^
サーバーのオペレーターは何年間したのですか?
ところで、そろそろ俺も本業の仕事をしなきゃいけなくなった。 俺は、これでも社長さんです。 責任感は誰よりも強い。 それがなかったら、 例え、個人業でも会社経営はやっていけない。 なので、ちょっとペース落とすよ。 実のところ、 仕事がたくさん溜まってたりします(^^;
小学生かよ
WEB会社の社長なら、著作権侵害すれば警察の家宅捜査が入って PC関連全部を証拠品として取り上げられることを知っているはずだ コンビニでおにぎり一つ盗んだだけで逮捕。みせしめですよ やはり、小学生なのかな
>>623 業務服務規程違反
って言葉を知ってるかい?ボク
社内の情報は、
社外に公開してはいけません。
たとえ、それがどんなに些細なことでも。
それが社会ってもんだし、
それが大人のルールです。
あなたは、どこの会社に勤めているか知りませんが、
入社する時に、ある書類にサインをしたはずです。
さて、メシでも食ってテレビ見て
仕事の書類に目を通します。
サーバのオペレータが保守作業をするということがどうして秘密に当たるんだろう… バスの運転手がギアチェンジするのも秘密なのかな
とにかく、Kazukiが解説書けなくて困ってるっぽいのは分かった 昨日から準備中って書いてたじゃん
ちなみに、俺が書いたオペレーターの仕事は、 「まあ。この程度なら業務服務規程違反に引っかからないだろう・・。」 と思って、細心の注意を払って、 もっと重要な情報を伏せて書いています。 俺は、これでも大人ですからね。 ガキみたいな感覚で、 ネットで発言なんてしないよ。 インターネットはね。 君が考えている以上に怖いから気をつけた方がいい。 損害賠償など、 とんでもない金額になる。 大手が扱っているのは、億単位のものですから。。
>>636 画像はもう完成させた。
記事を書くぐらい5分もあれば十分。
でも、疲れたので、ちょっと休憩。。
今日中にはアップさせるよ。
ご心配なく。
では、この話題は終了。
上の人が可哀相だし・・。
>>637 オペレーターなんてやった事ないんだろ?
適当な解説したところで
>>617 が正しい事書いたから
慌てて誤魔化そうとしてるんだろうけど、誤魔化しきれてないよ
次から嘘付くときは下調べをしっかりしようね
散々利用させて頂いたバトーキン氏のデータ等を愚弄しておいて >俺は、これでも大人ですからね。 >ガキみたいな感覚で、 >ネットで発言なんてしないよ。 どこのお口がこんな発言してるんでちょうねー
>>617 くらいの内容ならググッたら出てくるんじゃね
どっかの会社の求人の業務内容に書いてそうな感じ
俺が夜勤勤務で一人で汎用機のオペレーターをしてて、 汎用機がダウンした時は、怖かったな・・。 室内に備え付けてあるランプが光って、 警戒音を室内に響きわたった・・。 俺、全身に鳥肌が立って、 泣きながらマニュアルを引っ張ってきて、 一人で復旧された。 マニュアルなんてね。 膨大にあります。 大きな本棚の中に、 たくさんのマニュアルが入っていて、 そこに復旧させる方法が書かれています。 詳しいことは言えないけど、 俺は金融関係の汎用機のオペレーターをやっていました。 つまり、朝の銀行業務開始までに 汎用機を復旧させなければ、 関西の全部の銀行が業務を開始することができません。 その被害金額は計り知れないでしょう。 なので、軽い感覚でオペレーターをやると、 痛い目に合うから気をつけた方がいい。
俺はそれが怖いから、 オペレーターは二度とやりたくありません。 あ。俺が、どこで働いていたのかは絶対に言わないでね? 業界人なら、 これだけでも解るから。。
妄想もいい加減にしろ
知り合いに
>>1 みたいなヤツいるんだが
こういう人種が定期的にpopするのは何故なんだぜ?
>>644 はいはい。
妄想妄想w
ま、こんな話題は止めましょう。
では、記事を書いてきます。
ゲハ板なら2.3人いたな 自己愛性人格障害だっけ?
>>646 >妄想妄想w
だよな。もし本当だって言い張ってたらお前を精神病院にぶち込む所だったぜ
俺は、オペレーターは怖い。 ってことだけを言いたかっただけです。 上の人、これでいいかい? 君のおっしゃるとおり、 オペレーターの仕事は難しいです。
ここで妄想を垂れ流すなよ… 2chはお前のチラ裏じゃねーんだよ
こいつ日本語打てるとかすごいな
虚言癖があって善悪の区別の付いてない奴にメインフレーム任せる大企業がどこにあるんだよww
>>651 俺の事?
確かに熱くなりすぎて変な事書いたかもね
不快に思ったんならすまん
>>1 がシスオペだった事が嘘でも真でも
ゲーム開発が進んでない事や
解説が間違いだらけな事や
今まで(今も?)他人の著作物を勝手に流用した事に変わりは無い
つーか別にクオリティはどうだって良いから
自分のコード
を見せて欲しい
結構前から言ってるけど出すのはDirectXの初歩とか、Windowの表示、それに解説の超基礎(それでも間違ってたりするけど)ばかり
解説書読めばそのまま書いて有るようなコードしかない
>>507 初期化か・・。
初期化ね。
俺もDirect3Dの初期化には、
ずいぶん悩んだよ。
どーしても理解できなくて、
どんなに調べても理解できなくて苦労した。
でも、そのかいあって
理解することが出来ました。
実は、昨日、超BBSに、
Direct3Dの初期化のソースを書いておきました。
ある程度、理解できる人は参考にしてみてください。
ちなみに、前に言っていた「お返しに難しいことを教える。」はこれのこと。
でも、もう少し待っててね。
誰にレスしてんだろ
ちなみに、これが現在の俺のレベルです。 俺は上級者?それとも入門者? いえいえ。 俺は永遠の素人ですw
>>655 こんなもんググレば大量にでてくるしMSDNにも無いか?
なーんの価値も無いよ
平気でパクリしてさも自分で書いたかのようにする奴は 趣味マだけどマと認めたく無い
どんだけ馬鹿なんだこの人 だれか止めてやれよ…
>>660 じゃあ、あなたにはこれを説明できるのかな?
>>659 うん。それ。
難しいことは何も書いていません。
難しく見えるのは、
単語が複雑だからそう見えるだけで、
書かれている意味は、
C言語の基礎の基礎を使って定義しているだけです。
>>659 に記載したサイト様からDL出来るサンプルファイルの
"D3DSetup.cpp"と、そちら様の「Direct3Dの初期化ソース」なるものが
まったく同じな理由をご説明ください!
>>665 じゃあ、あなたにはアレを説明できるのかな?
ちなみに、これはフレームワークと呼ばれるもので、 誰が書いてもこうなります。 なので、こういうのは、 ネットで探して、 コピペで組んでいけばOKです。 そうやって時間短縮しましょう。
>>670 いいえ、これは彼がクラス化したものです
誰が書いてもこうなるわけではありません
こいつの「理解した」っていうのは 「(丸パクすれば良いことを)理解した」って言うことなのか
>>671 kazukiはクラスとかわかんないんだろw
>>672 書かれていることを理解するということです。
でも、使う時は、
コピペでもいいでしょ。
ちょこっと変えればオリジナルになる。
変数名を変えるとか、
構造体名を変えるとか。
>>675 そんなのはオリジナルじゃねえよ
こんな感覚だからいつまでたってもオリジナルのコードが出てこないんだな
他人のコードパクッて、変数名と構造体名を変えたらオリジナルって正気かよ
てか
>>570 みてDXの初期化の話しし出すとか
for文も分かってないようだ
>>674 いつの話をしてんだよ。
C++を使うなら、
クラスぐらい知らなきゃ話にならないでしょ?
>>676 俺は別にオリジナルでなくてもいいと思っています。
どうして、あなたは、そこまでオリジナルに拘るの?
知識自慢をしたいからか?
ネットに公開されてるんだから、
それをコピペすればいいじゃないか。
必要ないところは、NULLを指定して使うとかさ。
>>680 他人のコードのコピペで自分の作品が作れると思ってるのか?
他人のコードを使うなとは言わんが、丸コピペしてきて >実は、昨日、超BBSに、 Direct3Dの初期化のソースを書いておきました。 >ある程度、理解できる人は参考にしてみてください。 >ちなみに、前に言っていた「お返しに難しいことを教える。」はこれのこと。 はないだろ
予想通りの本性でワロタw
自分の(知)財保護に熱心な奴ほど他人の権利を蔑ろにしやすいよな。あるいは王権思想の表れだろうか。 コードをパクる奴はみんなそういう言い訳をする
>>682 いやwだからwww
Direct3Dの初期化とか、
そういうのはコピペでもいいでしょ?
もちろん、その中身は自分で組まなきゃ、
自分が作りたいものは完成しないよ。
int a =0;
↑
これも初期化だよね?
これをネットからコピペしたら、
盗作になるのかい?
盗作にならないために、
int z =0;
こんな風に書かないといけないのか?
ホント、あんたは頭が硬いよ。 ダイアモンドヘッドだwあんたはww
>>688 初期化部分は誰が書いても同じにはならないし、自分で書く能力が無いのであれば
なおのこと
すぐに極論に飛ぶ辺り、ほんとに子供っぽいなw
>>680 >クラスぐらい知らなきゃ話にならないでしょ?
ではなぜ
>誰が書いてもこうなります。
と言ったのでしょう
該当のソースコードを見る限り、D3DやWinAPIの初期化をクラス化し
読みやすさと再利用を考慮したソースコードに仕上がっているのに
クラスのこと説明してみ
>>684 ホント、うっとうしいやっちゃな・・。
じゃあ、「書いた」を「投稿」と脳内変換して読んでくれ。
掲示板に投稿することを書くと表現するのです。
俺は、そんなこと言ってるのではない、
これの意味を図解入りで詳しく解説する。
と言ってる。
もういい!俺泣くからw!
>>688 使用するデータにもよりますが、便宜上「int」とし「a」を変数名とする場合
int a = 0; // 何々に利用する変数a
と、私なら書きますが
要するに、俺は初心者に解りやすく解説できればいい。 ただ、それだけ。
>>658 >ちなみに、これが現在の俺のレベルです。
なるほど、コピペが出来るレベルなのね、確かにその程度だわ
>>694 いくら泣いても盗作は正当化されないから
好きなだけそこで無様に泣いてていいよ?
初心者にわかりやすく「挑戦」だろw
>>696 なんで自称素人のあんたが初心者に解説する必要があるんだ?
自分一人でコソコソやってろよ
>>696 本人のプログラムに対する理解が歪曲しているのに
解りやすく? 初心者に解説?
どうかしら
あ。ちなみに俺、
>>659 のサイトを参考にしてDirectXを勉強しました。
すごく解りやすいから、
知りたい人は、どうぞ見てきてください。
>自己愛性人格障害(じこあいせいじんかくしょうがい、英語: Narcissistic Personality Disorder)とは、ありのままの自分を愛せず、
>自分は優越的で素晴らしく特別で偉大な存在でなければならないと思い込む人格障害であるとされる。
>過度に歪んだルールである内的規範が弱いケースであるため、精神病的に扱われる事もある。
完全に
>>1 と同じで驚いた
病院池
記事、執筆中。 また、なんか動画貼っとこう。 そのうち動画が合図だと思ってくれるでしょうし(^^ では、また後でね。
>>694 >じゃあ、「書いた」を「投稿」と脳内変換して読んでくれ。
「お返しに難しいことを教える。」の内容がその「投稿」なんだろ?
教えるって言うのは、自分の知識を相手に伝えるということだとすると、
その「投稿」は
>>659 のページの人の知識であり、
あんたの知識ではないだろ
もし、そのソースコードが有用で便利だと伝えたいなら、
大本のページを教えるのが常だろう
そして「教える」というからには、その「投稿」について責任を持つってことだよな?
そのコードに関するあらゆる質問に対して明確な回答をすることが出来るのか?
この場合、「どうでもいいし」は使えないぞ
それは確実に責任放棄だからな
却って仕事は普通の人よりできるらしいから、営業とかなら成功できるんだろうな。
しかし
>>1 の状態が精神病とかそれに近いレベルだとすると、このスレは池沼叩きスレと
何ら変わるところがなくなるというダィレマ。
>>703 参考にならないわけではないけれど、情報としては古いので
オススメできません^^
著者の新サイトの方をご覧ください
>>680 >ちょこっと変えればオリジナルになる。
を受け
>そんなのはオリジナルじゃねえよ
っていったのにオリジナルじゃなくていいって言われてもな
自分の
>オリジナルになる。
を否定するってことでいいのか?
何書いてもスルーされるから無駄だよ
だれか、教えてほしいのだけど VSのVC++を使ってるけど、強烈に重い。PCが古いからしかたない。 なんとか、軽くする方法を教えて欲しい。 現状はノーマル。 4649
つーかkazukiにとって「難しいこと」がウィンドウの表示なのね…
なるほど、こうやってサイトのアクセス数を増やすのか。 Kazuki先生はなかなかのテクニシャンですね。 参考になります。
主にとって他人の話を聞くとこが不可能だってことがこのスレで合意されちゃうと 誰も書き込んでくれなくなるね
>>718 それでも本人は
「このスレを大勢の初心者がみてる。初心者は2chが怖くて書き込めないから。」
とか信じこんじゃうよw
他者の話は右から左に流すし、source codeも右から左に丸写しだし 演算も右から左に流れるんでしたっけ^^
自分を愛するためだけだからどうでもいいよそんなこと。それよりもっと感謝されなきゃ。 大変大変。君等みたいに暇じゃないんだよ^^
重い・・・。 現在、極度にアクセス集中中・・。 もうちょっと待っててね。(^^; みんなの元気玉にサーバーのCGIが持ち堪えられねーww みんなオラに元気をwww
アクセスが集中し過ぎて サーバーが悲鳴を上げてますのでw もう少しあとでアップすることにします。 非公開状態で待機中です。 しばらく、アクセス控えてください。。 でも、多分、これで「後ろから前に向かって」をうまく解説できてると思うな。(^^
よし。 一瞬、アクセスが落ちた隙にアップしたw ふう・・。 さあ、どうぞご覧ください(^^
例によってデタラメwww
あれだけ詳しく説明されても後ろから前とか言い続けるのか
>>725 何にも解ってないくせによw
そうセリフを履いておいて、
他のプログラムを知ってる人に助け舟を出してもらおうとしてんだろ?(^^
そして、それに乗っかって自分も
それに合わせて発言するとw
どこをどう見ても間違ってないし、
デタラメなら、どこがデタラメなのかを
あなたの口で言いなさい。
デタラメということなので、
間違いは一つではなく複数ですね?
はっきり言おう。
ズバリ!あなたは、プログラムのプも知らない素人です。
これだけは間違いない。
あなた以外の住人が、
プログラムを理解しているのです。
ロリポップとWordPressの相性が悪いのは有名な話じゃね?
なぜ switch (A+b) ではなく switch (b=A+b) としたのか、説明してくれ。
後ろから前に向かって と メモリ内部の部分がデタラメ
各演算子に意味が含まれているのです。 でも、考え方は、後ろから前です。
相変わらず#defineを勘違いしたままか。
switch (b=A+b)ってなんぞwwww
基礎を疎かにして、独学で言語を学ぶと こんなイビツな考え方をしてしまうんだな。
そういやまだ#defineを格納とか書いてるなwwww
>>727 何もわかってないのは君だろう。
(1) マクロはメモリ上に格納されない
(2) switch の式で代入する意味が無い
(3) C言語は「後ろから前へ計算する」がでたらめであることはすでに散々指摘済み(
>>545 は試してみたか?)
(4) 「これを条件分岐といいます」が意味不明 (if文は条件分岐ではないのか?)
(5) case ラベルの値を「式の答え」は意味不明
(6) ここで演算子の話が出てくるのは不適切。演算子は switch のついでで説明す
るようなものではない。また「向き」が何の向きなのか不明確
ま、 ifよりも条件分岐の方をよく使います。 の謎は(予想されてたけど)明らかになったなwww
ここまでくると、わざと間違えてるとしか思えない 優先順位の表を見てると、演算子の人気ランキングに見えてきたしw
こいつはもしかして代入(=)を行わないとメモリ上に格納されないから 他の処理で一切その数値を使えないとか思ってない? そう勘違いしてるとすれば#defineで「メモリ上に格納される」とか変数と勘違いしたり switchで代入したりとか奇天烈なことを言ってるのもわかるような気がするw
お前ら間違い指摘するんじゃねーぞ
-> ってポインタ参照してのアクセスに使うやつじゃないっけ? . と同じものみたいに書かれてるが
A=1、b=1で、b=A+bを前から評価してもbには2が入るぞ
b=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の評価はどうなるのか答えて欲しい
>>741 疲れたので、あとで確認しておくよ。
>>733 >switch (b=A+b)ってなんぞwwww
そんなこと言われてもなーw(^^
スイッチを使ってるだけです。
>>739 そんなところだろうな
で、問い詰めると例によって
・switch(b=A+b) も switch(A+b) も意味は同じ、どっちでもいい
・switch(A+b) ではなく switch(b=A+b) としたことに理由なんてない。そうしたかっただけ
とかイカれたことを言うんだろうな
上の解説は飾りみたいなもので、 最後の表が一番重要かな?
> スイッチを使ってるだけです。 スイッチを使うのに意味もなく代入してるのはなぜ?って聞かれてるんだって、わからない…んだろうな。
>>744 確認=ググる
switch文くらいでエラソーにしてんじゃねーよ
あと、演算子の優先順位の表。 単項演算子-をマイナスとか書くなよw それで一番重要とかお前が一番判ってないっつーの
>>745 うん、その通りだよ。
そういう風に解説したいから、
そう解説しているだけです。
意味などない。
理論演算子?
hpの画像が小さくて見えないんだけど、どうしてなの?
もしかして: 論理演算子 kazukiは理論ってことにしたいらしいな またどうせ「そんなことはどうでもいいのです(^^そんなこと知らなくても(ry」とか言い出すぞ
>>751 しまったw
急いで作ったから間違えたwww
それぐらい見逃してください。
あとで直しておきます。(^^
ご指摘ありがとう。
ふう。。ところで俺は疲れた。
ここ連日、ハイペースで公式サイトを更新してきましたからね。(^^;
なので、ここでちょっとペースダウンさせよう。
仕事も溜まってるし、
そっちも片付けることにします。
つっこみどころはいっぱいある。 あいかわらずマクロの定義が実行時メモリに確保されているかのような図。 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の値が何かわかる?
今日もkazukiであることに全く隙がないなw
>>755 それでもいいけど。
俺は、スイッチには「式を入れることが出来る」ということを
一番、言いたかったのです。
外で計算するんじゃなくて、
そこで計算させる。
そうすれば、ソースが短くなっていいでしょ?
そんでもって、その「式の答え」と表現すれば
解りやすいじゃないか。
多分、こんな解説してるの俺だけだと思うけど、
こういうのが、オリジナルです。
俺は教科書を読んで勉強して、
そこに載っていることだけを学んでいるのではない。
「自分で研究」して学んでいます。
なので、あんな解説になりました。
> そういう風に解説したいから、 > そう解説しているだけです。 不必要な代入をするのは馬鹿。 代入することで、以後の状態が変化する (副作用があるという)。つまり、それ以前と それ以後で、同じ処理をしても結果が異なる場合が生じる。 そういう副作用のある処理を不必要にするべきではない。 代入の必要がある場合でも b=A+b; switch(b) {… と書くべき。(そこで状態が変化していることを switch 文の中に埋め込んで見えにくくするべきでない) まして「初心者むけの解説」で不必要なことを書く事で、例えば switchの式には代入文を書く みたいな勘違いを生むことがわからないのか?お前みたいな。
ほかに解説されていない=そんな使い方をしないし、しない方がいい って風に思わないのがKazukiクオリティ てか、毎回解説の焦点が定まってないというか、恐ろしく初心者を混乱させるような物だな 初心者が張りぼての知識を教えるときによくなる状態
>そうすれば、ソースが短くなっていいでしょ? 無意味な代入して文字数増やして何言ってるんだ 行数減らしたきゃムリヤリ一行にでも書いたらいいだろ…
>>755 >bに意味もなく1の初期値を与えていること。
だから、そうやって解説したいからです!って言ってんだろうがぁぁぁおーーん!!
bをね?1にすることで、
Aもbも1になりました。
その状態で計算式を考えて見ましょう。
前から後ろに向かって考えれば、
先頭のbに1が入ってしまいます。
それは間違いなんだよ?ということを解説したいから、
ああいう解説にしました。
式と値のどちらでもいい。ってことをちゃんと説明するべきだろ。 それが初心者向けの親切だとおもうぜ。 自分の間違いにそれっぽい言い訳を付けて誤魔化すのも大変だろ。 素直に受け入れようぜ。
> 俺は、スイッチには「式を入れることが出来る」ということを > 一番、言いたかったのです。 それなら switch(A + b) で十分だろ。代入の必要はないのだから。 「初心者に親切に」なら (1) switch(b) で、b の値によって処理が変わることを示す (2) switch(A + b) の例を示して、switch() には式を書く事も出来ることを示す (3) (あくまでもおまけとして) 「C言語では代入も式だから(値を持つから)」 代入式を書くことも出来ることを示す その際には、 これはあくまでも説明のための例で、意味のない代入はすべきでないこと も説明すべきだな
答えが1になったからaが表示されました。 答えが2になったのでbが表示されました。 と言った方が解りやすいよ。
>>762 >前から後ろに向かって考えれば、
>先頭のbに1が入ってしまいます。
何言ってるんだよw
=と==の区別ついてねぇだろこいつ。
代入演算子をちゃんと理解しろよ。
> 前から後ろに向かって考えれば、 > 先頭のbに1が入ってしまいます。 それは単に代入の意味がわかってないからで、「前から後ろに考えるから」ではない。
>>767 ==は、比較演算子
=は、代入演算子
ってハッキリ言ってるでしょ?
そんな人に向かって、
区別ついてないとか、よく言えたね?
まあ、いいや。
今日はいい仕事したよ。
いつも解説をアップした後は、
スッキリした気分になる。(^^
ちょっと、スナックでも行ってくるか(^^
今でもやってるかな?
ID変らないうちに。
>>619 自分と付き合って運用屋さんはインフラの手配からして、イレギュラーなトラフィック上昇以外では
ダウンタイムを保証したサービスを提供しているようなところ(その代わり大規模なところはサポートしてないけど)なので、
多くを求めすぎているのかも。
大規模サービスを提供しているDCのオペレータはそんなもんなのかもね?
>>622 K3ExNE1u
それに比べて何お前?
>社外秘情報だろ・・それ・・。
>そんな細かいことを書いちゃいけない。
とか。
俺は開発屋だが、どう考えてもちょっと考えたら出てくる抽象的な内容だろ?
正直開発屋から見た運用屋っていうのは、システムの安定運用のために、
本番環境については些細なバージョンアップも躊躇うような人種だぞ?
自分で挙げた例で言えば、データ取得の自動化も手で打ってるのをスクリプトにしただけでも
問題ないか開発に確認してくるような奴らだ。
彼らのノウハウは、より具体的で長期運用している現場じゃないと
知ることができないようなイレギュラーな現象への経験や生の統計データにある。
それを一般的に表現しただけで社外秘とか舐めてるとしか思えない。
IDを追いかける限り、まるで自演してるようにしか見えないのだが、大丈夫?
771 :
770 :2010/09/22(水) 00:04:27 ID:fNppjQx5
間に合わなかったorz
>>769 名前だけ知ってたって意味ないよ。
どういう役割なのか理解してないようにしかみえないからな。
演算子の優先順位や結合規則書いてるのに後ろから前って言い続けるってことは 優先順位、結合規則理解できてないんだろうな
>>766 ならなおさら意味不明な代入なんてすべきじゃないな
A が 0 の場合
A+b の値が 1 なので "a" が表示されました
A が 1 の場合
A+b の値が 2 なので "b" が表示されました
でいいじゃないか。
やっぱり代入しないと数値は使えないって信じ込んでるっぽいよ。
>>769 代入演算子の働きが
「左側の式が示す場所 (左辺値)」に右側の式の値 (右辺値) を格納すること
(かつ、演算の結果の値は右辺値になる)
だと知ってれば「前から後ろ」だろうが「後ろから前」だろうが結果は同じだろ。だから
代入演算子を理解してないと言われる。
>>770 IDなんて気にすんな。おぼっちゃまw
俺は社会の仕組みをだな、解りやすく伝えて、
それ以上、行くととんでもない情報を公開してそうになったので、
流れを変えるために、
「それ以上言うな」的なことを言って、
彼に「目を覚まして!ここは掲示板だぞ!ネットだぞ!」ということを気づかせるために
ああいうことを言ったの。
多分、彼もそれに気づいたはずだと思う。
業務の内容とかを喫茶店で話すことも実はダメです。
なんて言ったかな・・・。
そういう決まりになってるのよ。
この業界の人は、特にそういうことには気をつける必要がある。
うっかり発言は、とんでもない問題に発展する。
前の a=bをa=a+b ってしてることといい 今回のswitch文で無駄な代入してることといい 代入辺りで致命的な勘違いをしてる気がする
算数の=に引っ張られてるんだよな。
思い出した。 「情報漏えい」だw では、ちょっと出掛けてくる。
本日のkazukiID ID:KlyUHZKS
>>743 に答えてくれないのか
まぁ
>>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が代入される
たぶんこんな理解してんじゃね?
>>778 というより最初にメモリ云々の解説してる感じからして
「メモリに格納」は「=を使う」
「メモリに格納されていないとプログラム上で利用できない」
って解釈で無理矢理代入してるんだと俺は思ってるんだがw
ttp://www.kazuki-sendo.com/game/wp-content/uploads/10-6.jpg この図見てなんで「後ろから前」に拘るのかなんとなくわかったわ
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 が入る
そんなことなんだろうな…
「守秘義務」だろうに… やっぱり中学生にしか見えない
>>785 ありがとう!!(涙
やっと、俺の言ってること解ってくれる人がいた!!
ヒデキ感激・・じゃなくてw
Kazuki感激!!
うえwwうえwwwww
でも、俺が言いたかったのは、
そういうことっす(^^
皆さんも、そんなに難しく考えないでください。
もしかして: switch文の説明みると評価式と書いてあるぞ 式なんだー 式といえば(数学を思い出して)1+1=2の形だな でも"a+b=b"これじゃプログラムでは上手くいかない>< お、逆にすれば上手く動くぞ! そうかプログラムでは後ろから前に計算するんだ! がんばって思考を考えてみた
>>787 礼を言われる筋合いはない。お前がどう考えてるかわかったというだけで、
それを肯定する気は微塵もないのだから。
>>789 お前の解説はこうでもしないと理解出来ないんだわ
やっぱり、=を代入じゃなくて、 等号記号だとみてんじゃねーかw
>>789 お前に笑う資格はない。
>>788 はもちろんおかしい(*1)
だがお前の考えも同程度におかしい
(*1) もちろん
>>788 はわざとおかしいことを書いているのだろうけど
式とか、答え、とか書いているから、 C言語の構文が算数の式と結びついて 離れないみたいだな。
>>785 が正解か
じゃー
a=1,b=2,c=3で
a= (b= a+c) + a + (c=a+b)
はどうなるんだろうな
「後ろから」だと8になって、
「前から」だと10になるぜ
そして実際計算させると10だぜ
この問題をどう解釈する?
ああ、そういえば「A が 1 に置き換わる」点だけは正しいな。
もっとも、
>>785 の説明(が本当にkazukiの考えと同じだとして)だと置き換えは実行時だからやっぱり正しくはないか
>>794 おかしかったら笑ってもいいんだよ?(^^
うはははは!www
こんな俺みたいに。
てか、笑え。
お前、笑え。
1+1=2 みたいな等式(もしくは不等式) の形の式しか知らなくて、1+1だけでも式なん
だってことを知らずにきたのかな。よくわからんけど
>>799 だいぶ笑わせてもらったけど、ここまで来るとむしろ笑えない
俺釣りに違いないと今まで思ってたが、真性なんだ・・・
逆に釣りに見えてきた
後釣り宣言とかしてる辺り真性だと思う てか、釣りで何ヶ月(最初は動画上げてるだけだったから3ヶ月ぐらいか?)もバカ演じれないよ普通の人なら
Kazukiを分析すると、 精神病かもしれない そうでなければ、 「ボケ老人」だろう、どこの家庭にも居る。 戦後の混乱期に小中学校であまり学んでない。 老人特有の頑固さで協調性が無い、 年長になると見栄張りで、頭を下げて青年達に聞くことが出来ない。 この年代は生き抜くための根性だけはある。 独学で学んで、実験だけで答えを導き出す、かなり時間を使ってるはず。 このような老人は敬遠されて、いっしょに遊んでくれる友が居ない。 だから、若い人と会話できる事が楽しくてしょうがない。 だから、君達が遊んであげるととても喜ばれる。
このスレ見てると 普段自分が使わないような文法が見られて面白いなぁ
int a = 2; a += 3; とか struct Foo {}; Foo* foo = new Foo; はどう理解しているのか気になる。
今、帰ってきた。 んじゃ解ったよ。 「右から左=後ろから前」の超解説を今からやります。 文章書くからちょっと待っててね。 多分、超上級者向けだと思う。
そりゃ間違ってんだから誰にも理解出来ないわな 超上級者でもむりだわ
間違った考えをいくら頑張って説明しても無駄だっての そんな無駄な努力止めて、まずは今の解説ページを全削除するべき。
そもそもC言語は何なのかと言うと、 人間が読んで理解できる文法です。 つまり、コンパイラが読める文法のことです。 C言語のコードをそのままコンピュータに渡して、 「これ読んで!」って言っても、 コンピュータは読めません。 CPU「ゴメンなさい・・。泣いてもいいですか?」 となるww そして、このコンパイラはソースを読むとき、 全ての文字を一文字単位で考えた時、 文章の最後から前に向かって読むのだ。 10進数の7を、2進数にすると「0111」になる。 そして、2進数の最小単位がビットです。 コンピュータは、ビットという小さな器の集合体です。 [ ]←これをビットとする。 10進数の7を二進数にすると[0][1][1][1]←こんな感じに、 各ビットの器に放り込みます。 正確には各器の電圧を変化させています。 つづく
たしかに超説明だわ せめて日本語で書け
10進数の7を2進数に変換した時。 1.[0][1][1][1] こんな風に一発で変換するのは無理。 なぜなら、コンピュータは一つずつ順番に動いているから。 正しくは、 1.[*][*][*][1] 2.[*][*][1][1] 3.[*][1][1][1] 4.[0][0][0][1] ↑ こんな風に後ろから前に向かって 各ビットの器の電圧を変化させて、 10進数を2進数に変換する。 このように考えた時、 コンピュータは「後ろから前に向かって読んでいる」で考えれば、 すべてのツジツマが合う。 つづく
OKわかった 論理回路勉強して来い
int a = 0; ↑ これをコンパイラが読むときは、 1.; 2.0 3.= 4.a 5.t 6.n 7.i ↑ こんな感じに文章の後ろから読んでいる。 どうして、後ろから読むのかと言うと、 前から読むと文章の最後がどこなのか解らないから。 エクセルのセルを思い浮かべてほしい。。 0 1 2 3 4 1 2 3 4 ↑ こうだよね? 座標、0、0が終了地点です。 このように考えれば、解るよね?
上級者向け超解説終わり。
なるほど、kazukiコンパイラではそうなってるんですか
>>813 の訂正
1.[*][*][*][1]
2.[*][*][1][1]
3.[*][1][1][1]
4.[0][1][1][1]
以上!
これはコンパイラの話ですか? CPUの話ですか?
ワロタw >どうして、後ろから読むのかと言うと、 >前から読むと文章の最後がどこなのか解らないから。 ここがダウト なんのために 「;」を付けると思ってるんだよw
ここまで無知を晒して何が楽しいんだろう
>>820 ;は正確には、EOP?だったかな?
ちょっと忘れた。
とにかく、何かの意味なんだよ。
でも、
#define a 0
↑
こんな風に最後に;を入れない場合もある。
;が文章の終了という意味なら、
これを証明することが出来なくなる。
なので、文章の先頭がゴール地点で
座標0に来ると次の行を読むと考えればいい。
なので、後ろから前に向かって読むのだろう。
後ろから読むコンパイラww ビットレベルで下位から計算される(そういう場合も当然ある)ことと、ソースを読む方向が なんで同レベルで語れるんだ。 つか、プリプロセスの話とコンパイル時の話と実行時の話が一緒くただよな
GCCのソース読んできたら良いと思うよ。 いや、俺も読んだ事無いけど普通にソースの先頭から読み込んでるだろうし インタプリタじゃ無いんだから読み込み順に処理するわけでも無いし てかファイルの終端が分からなかったら終端から読むなんで事出来ないっていう
#define A 1 int b = 1; b=A+b; ↑ この式だけを後ろから分解 1.; 2.b ←ここには1が入る 3.+ 4.A 5.= 6.b ←ここには2が入る 各演算子は、それぞれの向きで考える。 +は、左から右 =は、右から左 これで俺が言いたいこと解った?
> #define a 0 > ↑ > こんな風に最後に;を入れない場合もある。 そりゃ、それを処理するのはプリプロセッサでコンパイラじゃないからなww それに、前から読んだとき終わりがわからないなら、後ろから読んだって初めが分からなくなるだけだしwww
てか、コンパイラの動作なんて言語仕様と全く関係無いんだけどな。 コンパイラは最終的に仕様にそった実行ファイルを吐けば中でどううごくかなんて言語側で制限しないから。
どうやって行と行を見分けるん? 見分けられたとして、行の終端から調べるためには終端がどこにあるかわからないと出来なくね?
もしかしてこいつの頭の中ではコンパイラはアセンブラ程度の物なのかもしれない
b=b+(A+b); ↑ これを後ろから読んで分解 1.; 2.) ←関数呼び出しを意味する 3.b 4.+ 5.A 6.( ←関数終了を意味する 7.+ 8.b 9.= 10.b このように考えれば、 各演算子の優先順位もキレイに説明出来る。
int main() { struct test sttest; sttest.n = 10; printf("%d\n", sttest.n); return 0; } struct test{ int n; }; これが動かないのは何で?
関数呼び出し… ( ゚д゚) ・・・ (つд⊂)ゴシゴシ (;゚д゚) ・・・ (つд⊂)ゴシゴシゴシ _, ._ (;゚ Д゚) …!?
まさかの関数登場
「この式だけを後ろから分解」ってのが都合が良すぎない? 終端が分からないっていうなら一番最初はソースコードの最後にならないとおかしくね? 行単位でっていうなら #define A 1 int b=1; b=A+b; って書かれたら 1.; 2.b ←はい、値が分かりません
もう一回
>>280 読んでこようか
あとb= (a+b)+b;はどう処理するん?
配列変数を指定するとき、 int a[2] ↑こう書くよね? これを後ろから分解 1.] 2.2 3.[ 4.a 5.t 6.n 7.i なので、[ ]←これは順位が1位なのだよ
#include <stdio.h> int main() { int a, b; a = 1; b = 2; // 「前から読んだら文がどこで終わるかわからない」としたら、「後ろから読んだとき」 printf( "%d\n", b + a++ ); // ここで終わる文がどこから始まるのか、コンパイラはどう判断するの? return 0; }
>>836 「なので」の前と痕が全くつながってない
ちなみに=代入演算子は優先順位が低いから、 最初の方に書く必要がある。 a = a +1 ↑ =は2列目に書いている 優先順位が低いから
どのプログラムもそうなってるよ。
> ちなみに=代入演算子は優先順位が低いから、 > 最初の方に書く必要がある。 その理屈だと、優先順位の低い = 演算子は必ず 優先順位の高い [] より前に書かなきゃいけないってことでいいんだよね!
配列要素に代入出来ないのか キツイな
a[1] = b[2];
>>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位
そうか… 今まで x * y + 2 とか書いてたけど、これからは優先順位の低い + を前にして 2 + x * y って書かなきゃいけないな
優先順位と書く位置は全く関係無い というか、順序を制限しないための優先順位なんだけど 例えば算数で 1+2×3と 2×3+1が同じになるのは優先順位のおかげ
だ か ら 後ろから読むの(^^
想像以上にバカだった
取り合えず
>>743 がわかりやすいから何度も読め
それでも後ろから読む必要があると思うならもう知らん
int a = 1 ; if ( (a=a+3)>2 || (a=a-5)>0 ){} この条件文は通る? この条件文を抜けたあとのaは? 後ろから読んで説明してみて
文ごとに後ろから読むの? ソース全部後ろから読むの?
>>851 めんどくさいからもう分解しないけど。
if ( (a=a+3)>2 || (a=a-5)>0 ){}
↑
これを脳内で後ろから前に読んでください。
それを俺が書いた順位表で考えて
その順番に計算してください。
この場合、||←(理論演算子)が最後から二番目の順位です。
どっかに演算順序を超わかりやすく書いてくれたレスがあったはず
>>847 なにが「だ か ら」なのか全く不明
改めて確認するが、
・優先順位の高い [] 演算子は低い = の前に書いてはいけない
・どのプログラムもそう ([] が = より前に書かれてるようなプログラムはない)
でいいんだよな?
ソースは1行目から下に向かって読む。 列は、後ろから文章の先頭(座標0)に向かって読む だが、実行する場合は、 mainから実行
あ。実行する前にグローバル変数とかインクルード読んでるけどね。 それを飛ばしての話です。
=を関数で考えると int equal(int &a,int b); 見たいになるから左辺の正体は値じゃなくて参照って考えるといいんじゃね?
あった
>>476 この説明見た上で後ろから読む必要を説明してくれ
>>845 いや、違う。。
x * y + 2
でもいい。
後ろから分解
1.2
2.+
3.y
4.*
5.x
こう考えて、+と*の順位はどっちが上ですか?
俺のサイトの表を見てください。
*は3位で+は4位です。
なので、その順番で計算する。
前から読むと文末が分からないのに 文末から読めるって発想がスゴイな
> ソースは1行目から下に向かって読む。 > 列は、後ろから文章の先頭(座標0)に向かって読む じゃあ a = a * (b + 10); はどう読まれるの?
ちなみにこれはコンパイラの理解です。 これらの文章法則をコンパイラは、 機械語に変換して、 そして、ようやく本来のコードになる。 機械語を直接話せるなら、 コンピュータにとって、もっといいコードになる。 アセンブラとか。
>>862 優先順位考えるんだから
前から読んでも問題無いよね
>>859 最初に変数を読んで後は後ろから分解するんだよね?
int a = 1, b = 2 ; a = a+b ; a = 10 ; b = 11 ; a = a+b ;
あれ?
最初の式と後ろの式の結果がいれかわっちゃったw
>>865 前にもレスしたけど
コンパイラがどう読むか
と
言語仕様としてどの順序で演算するか
は全く関係無い
>>862 代入演算子は優先順位が低いから最初の方に書かなければいけないって言ったのはお前じゃん
なのになんで
優先順位の低い + は優先順位の高い * より前に書かなければならない
にならないの?
#define A 1 これを分解 1.1 2.A 3.e 4.n 5.i 6.f 7.e 8.d ←ここまで読んで、ようやく「define」であることを理解 9.# ←ここまで読んでようやく「呼び出すんだね?ラジャー!」 となって、マクロを使う。
ああ。正確には、 1.1 2.空白(スペース) 3.A 4.空白(スペース) 3.e 4.n 5.i 6.f 7.e 8.d ←ここまで読んで、ようやく「define」であることを理解 9.# ←ここまで読んでようやく「呼び出すんだね?ラジャー!」 こうだね? なので、1はAに格納される
ダメだこいつプリプロセッサもやっぱり理解してない
訂正 1.1 2.空白(スペース) 3.A 4.空白(スペース) 5.e 6.n 7.i 8.f 9.e 10.d ←ここまで読んで、ようやく「define」であることを理解 11.# ←ここまで読んでようやく「呼び出すんだね?ラジャー!」 何度も失礼・・。
>>839 をふまえた上でint型配列の変数に値を代入したいときはどうすれば良いか答えてくれない?
>>871-872 # で始まる行であることをまず認識しないとプリプロセッサが動けないんだが
>>875 その指摘は見えないようになってるらしい
私の高校の頃の数学教師の言葉 「数学の式や関数って、プログラムで使う式や関数とは別物だから混同しないほうがいいよw 同じなのは見た目だけw」
てか取り合えず
>>476 を読めよ
まさか読んだ上で言ってるの?
当時の自分は「は? 数学でもC++でも別段困ってないんだけど」ってスルーしてたけど、 カズキくんみたいに自分の知ってることだけでC++を理解しようとすると勘違いするから 前もって言ってくれてたのね
字句解析とか構文解析なんて言葉は見たこともないんだろうな ごく簡単なものでいいから一度でもパーサを書いてみてから語って欲しいものだ
では、これにて後ろから前は終了!! じゃあ、寝るわ。
#define A(a) {a=a+1;a=2;a=a+3;} はい、説明して!
説明出来なくなると逃げる いつも通りだね
都合の悪い質問は全て無視して終了宣言か
#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ちゃんはこんな感じ
>>886 どっちかっていうとプリプロセッサちゃん
>>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;
↑
中身をこんな風に分解。
これをそれぞれ後ろから読む
このスレも後ろから読むと理解できます。 一番後ろはきっと5000スレくらいなので気長に待ってください。
起きてからでいいから #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; }
正確にはこうか。 1.a=a+3; 2.a=2; 3.a=a+1; 順番を間違った(^^;
>>888 まちがい。プリプロセッサは ; を特別扱いしたりしない
>>890 絶対に嫌w
わざと読みにくく書いて困らせようとしているのが、
その文章から読み取れるから。
自分で考えろ。
読めないのか
>>891 ならa=0で入れたらaは3になるんだね?
>>891 じゃあ、
int a = 1 ;
A(a)
のあとのaは3ですね
マジパネェっす
>>890 の二つのプログラムが同じものだってことは理解できる?
しかしこんなのが30代なんだよな 周りの人が可哀想で泣けて来るわ
「当然知ってたし そんなの初歩だよ」 とか言い出すと予想
とりあえず配列への代入について答えてもらおうか
>>896 違う。
初期化してるから毎回変わる。
1.a=a+1;
2.a=2;
3.a=a+3;
1.は1
2.は2
3.は何かな?
これぐらいは解るよね?
えっ
あれ? なんか、ややこしくなったけど。 とにかく、 #define A(a) {a=a+1;a=2;a=a+3;} ↑ この場合は、後ろの}←から読む。 改行しようが何しようが一緒! { }で囲まれたブロックを一つの関数として考えていきます。
>>893 俺は別に考える必要はないよ。この二つのプログラムがコンパイラでどう処理されるか
は (もちろん概要だが) 知ってるから。
キミはその「後ろから前」説を
「コンパイラはプログラムを後ろから読むんだ!だって前から読んだらどこで終わったらいいかわからないじゃないか!」
ってことを根拠にしてたんだよね。
でも「;」が区切りになることを認めちゃったらその根拠が崩れちゃうんじゃないの?
ちなみに{ }の中は、→こっち方向で読むので、 a=a+1 から読む。 失礼w 上のはミスです
>>904 とにかくじゃないよおおおおおお
>>891 の順番なら3が出るはずなのに
実際は5が出てるんだよおおおおおおおお
期待した値と違う結果が出てコンパイラがエラーや警告で教えてくれないんだよ!??
最悪のエラーじゃないか!!
>>904 分かりました{}をとりましょう
#define A(a)a=a+1;a=2;a=a+3;
エラーは出ませんよ?
改行したら出るけどなw
>>906 なぜ{}の中だけ前から処理するの?
普通に考えて全部前から処理していってなにが問題なの?
てか、プリプロセッサとコンパイラ コンパイルと、実行 は分けて考えろよ
もっと単純に プリプロセスと、コンパイルと、実行 で良いか
> { }で囲まれたブロックを一つの関数として考えていきます。 ふーん、じゃ、とっておき #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プログラムだけど、これはどんなふうに読まれる?
訂正 #define A(a) {a=a+1;a=2;a=a+3;} ↑ これを分解 最後の}から読み始めて、 a=a+1; a=2; a=a+3; 上記のようにまず、三つに分解する。 これを、上から順番に、実際は左から右に読んで、 最終地点の;をスタートにして、前に向かって読む。 終わったら次の行を読む。 この場合、{ }内は、 { ←これが0地点
>>914 なんでそんなややこしいことしなきゃならんの? 前から読めばいいのに
それにプリプロセスとコンパイルは違うって皆が言ってるの、耳に入らないの?
>>910 だから向きだよ。
演算子は、それぞれの考える向きが決まっている。
検索すれば出てくると思うけど。
>>915 それも
最後から読み始めて、
a=a+1;
a=2;
a=a+3;
のように分解する
で切り抜けられる気がしてきた
int a[10]; a[0]=0; この簡単な式の説明して見てよ
>>918 #define A(a, x) a=a+1 x a=2 x a=a+3 x
A(a, ;) で展開すればおk
>>917 演算子ごとに向きも優先順位も決まってるなら
読む順序も向きも演算子ごとに遵守してれば
前からも後ろからも関係ないんじゃないの
{a=a+1;a=2;a=a+3;} ↑ つまりこの場合は、 1.← {a=a+1;a=2;a=a+3;}←最後の}から前に向かって読んで 2.→ {a=a+1;a=2;a=a+3;}←の中身(1発目)右向きに読んでから 3.← a=a+1; ←ここで左向きに読む 4.→ {a=a+1;a=2;a=a+3;}←の中身(2発目)右向きに読んでから 5.← a=2; ←ここで左向きに読む 6.→ {a=a+1;a=2;a=a+3;}←の中身(3発目)右向きに読んでから 7.← a=a+3; ←ここで左向きに読む の順序か。 矢印は考える向きです。 ああ、ややこしいw
ややこしいなら素直に頭から読めよw
「後ろから前」説を守るためだけにそこまでややこしいことを考えるのか しかも自説についてなんの根拠にもなってない (後ろから前でもなんとか読める、と 言ってるだけで、後ろからじゃないと読めないことの根拠になってない) なんという徒労ww
バイナリツリーで構文木作ったら間違いを認めそうだが、、いや解らないかw
で、そこまでややこしいことを考えても
>>913 で崩壊するのに
>>923 ややこしいから。
改行して人間に解りやすいコードにする。
#define A(a)
{
a=a+1;
a=2;
a=a+3;
}
コンパイルは機械だから、
人間理解向きにしなくてもいいけど。。。
>>913 のプログラムがどう読まれてどう動くのか、考えておいてね。これ宿題
=
/\
a +
/\
a 1
>>927 根本的に間違ってる
頭から「読みながら」「優先順位に沿って」上の構文木をコンパイラが生成する
基本的に最適化の処理のために、読むのと処理するのは分けられている
ってことをみんなが言ってるのに解らないんだろーなーwww
あとは、そうだな #include <stdio.h> #define A 10 + 1 int main() { printf("%d\n", A); printf("%d\n", A + 1); printf("%d\n", A * 10); return 0; } このプログラムで ・どんな結果が出るか予想してみる ・実行して結果を見る ・なぜそういう結果になったか説明を考える これも宿題ね
ややこしいのでまとめる。 #define A(a) {a=a+1;a=2;a=a+3;} 1.}を最初に読む 2.{を探しにいく 3.{ }の中に入ったら右向きに読む 4.;を探しに行く 5.;を見つけたら、元の左向きに戻る 6.終わったら{ }内のルールに戻って右向きになり次の;を探す 7.;を見つけたら、またそこから左向きに戻る 8.{ }内は全部読むので、最後のは別に;はいらない(入れてもいい)
てかさ、
>>1 は自説に自信満々みたいだけど
C言語のプリプロセッサとかコンパイラでそういう順序で処理をしてるってのは
どこから知識を得たの?
#include <stdio.h> #define A 10 + 1 int main() { printf("%d\n", A); printf("%d\n", A + 1); printf("%d\n", A * 10); return 0; } 1.>を読む 2.<を探しに行く 3.中に入ったら最後に行く 4.hを読む 5..を読む(ここでhファイルであることを理解) 6.oを読む 7.iを読む 8.dを読む 9.tを読む 10.sを読む(ここでファイル名「stdio」が判明
#define A 10 + 1 ↑ これも後ろから読んで理解。 int main() { printf("%d\n", A); printf("%d\n", A + 1); printf("%d\n", A * 10); return 0; } ↑ これは int main(){printf("%d\n", A);printf("%d\n", A + 1);printf("%d\n", A * 10);return 0;} ↑ こんな風に一行にして読む。 1.}を最初に読む 2.{を探しに行く 3.{ }の中に入ると右向きになり、最初の;を探す 4.;を見つけたらそこから左向きに読む 5.全部読んだら右向きに戻り、次の;を探す 6.それを繰り返して、printfは終了 7.リターンの0を読む 8.n r u t e r の順に逆に読んで、returnであることを理解 9.終了
なんという非効率なスキャンプログラムwww
>>931 コードの中身の意味は、
#define A 10 + 1
↑
ここで、Aは「10+1」になる。
printf("%d\n", A);
printf("%d\n", A + 1);
printf("%d\n", A * 10);
↑
よってここは、
1.printf("%d\n", 10+1);
2.printf("%d\n", 10+1+ 1);
3.printf("%d\n", 10+1 * 10);
↑
こんな風になる。
公式サイトで散々解説していた内容。
1.は、11が表示
2.は、12が表示
3.は、+よりも*が先に計算され、10+10になり、20になる。
宿題にもなりません。
全部、公式サイトで解説している内容。
> int main(){printf("%d\n", A);printf("%d\n", A + 1);printf("%d\n", A * 10);return 0;} > > ↑ > こんな風に一行にして読む。 なんで? > 1.}を最初に読む (略) > 9.終了 なんでそんなややこしいことするの? 普通に前から読んだらいいじゃん。 「前から読んだらどこで終わるかわからない」 って説明は「;」を区切りだと認めた時点で崩れてるよね。 何度も言うけど、キミの説明は、 「こうやって後ろから読むんだ」 と言ってるだけで、l「後ろから読む必要がある」ことの説明には全くなってないんだよね。 それに言ってることがコロコロ変わってるよね。 最初は 「ファイルは最初の行から一行ずつ読んで、各行それぞれは右から左に読む」 って言ってなかった? なんで複数行をまとめて後ろから読む事になっちゃったの?
例えば
>>913 の
#define BEGIN {
#define END ;}
はどう読まれるの? {から} の中身を一行にして
#define BEGIN {#define END ;}
にして後ろから読むのかい?
一度、コマンドプロンプトを表示してご覧よ。 「プログラム」の「アクセサリ」の中にあります。 昔は、この黒い画面が当たり前だったのですが、 そこに C:\Users\owner> ↑ こんな風に表示されているはずです。 一番右側が現在地点で、 一番左側がゴール地点、つまりそれより先はない地点です。 そこで「dir」を入力して、enterキーを叩いてください。 なんか出てきます。 それもそういう構造になっています。 なので、コンピュータは右から左に向かって考えています。
>>938 defineで確保されたAのメモリの中身はどうなってんの?
>>942 文字を入力したら左から右に画面に表示されるよね?
右から左に向かって考えるなら、なぜ右から左に入力しないの?
C言語等の話してて何得意げに「コマンドプロンプト」とか言っちゃってるの? このスレでcmd知らない人は稀だと思うんだけど もしかして、初心者がそのトンでも理論を理解出来なくて 自分に質問しているとか思ってるの? ありえん(笑)
> 一番右側が現在地点で、 > 一番左側がゴール地点、つまりそれより先はない地点です。 はぁ? 馬鹿だろお前? 単に木構造の「根」を先に表示する形式になってるだけ。ドメイン名とかは逆に 「枝」→「根」の順になってる。 で、例えば c:\User\owner ってパス名を示されても、いきなりそのディレクトリの情報が ディスクのどこにあるのかはわからない。 ・まずc:のルートディレクトリを読んで、その中の User を見つける ・見つけた User の情報から User のディレクトリがディスクのどこにあるのかがわかる ・User ディレクトリを読んで、owner を見つける ・… という順番でc:\User\ownerにたどり着くんだよ。だから話は全く逆 コマンドプロンプトを開いたときに特定のディレクトリに既に移ってるのは、既にそこに 移動した状態でプロンプトが開くようになってるから。 > なので、コンピュータは右から左に向かって考えています。 パス名については「根」→「枝」の順になってるってだけで、それが右→左の順ってこと にはならないし、ましてそれが「コンピューター全般」の話になんかならん。 デタラメにもほどがある
寝て起きたらどんどんややこしい事してやがるのw
>>936 とか素直に前から読むのの二倍走査してるし
流石に無理があるって気づかないのかねぇ
優先順位が人と違うんだよ 事実はどうあれ自分が正しいんだろう
ていうかこの後ろから前に読むってのの「読む」の主語は何なんだろう
コンパイラならプログラムする上で全く関係無いし
(例え後ろから前に読む変態的なコンパイラがあったとしても、ソースと出力は変わらない)
人が読むならどう考えても前から読む方が楽だし
実行ファイルになった上でCPUが、なら
そんな事最適化やら何やらされまくってソースの書き順なんて意味をなさないし
言語仕様として処理が後ろから前に「進む」のは
>>936 で無理して前から実行される様にしてるから分かってると思うが、間違ってる。
寝てる間に面白い流れになってたじゃん 参加出来なくて残念
それにしてもいつになったらプリプロセッサとコンパイラの区別がつくんだろうな
主が間違いを認めたことはないんじゃないかな だいたい「ミス」で通してる
954 :
名前は開発中のものです。 :2010/09/22(水) 09:02:54 ID:cPiQEDdY
ミスって間違いの事だけどね。
単なるミスと理解の間違いなんて簡単に見分けられるのにな
>>1 の場合はミスじゃなくて理解の間違い
Kazuki 様 貴方のサイトでC言語のプリプロセッサの解説をして頂け ないでしょうか? ぜひお願いいたします。 C言語を学ぶうえで、プリプロセッサの理解は避けて通れ ません。ぜひ、バKazuki様の分かり易い解説をお願いいた します。
1つの間違いを1スレ以上に渡って説明しても理解しない、か 解説の間違いを全部説明しようとすると何スレいるのやらw
× 解説の間違いを全部説明しようとすると何スレいるのやらw ○ 主が間違いを犯すことを理解させようとすると何スレいるのやらw
もう無理だよ。 根本的な所から理解できてないし 理解しようとしないんだもん。 むしろ自分で奇天烈理論展開して正当化しちゃうとか笑うしかないw
事実は二の次三の次、自分の成功体験が第一
>>854 やっぱり「 理 論 」演算子って書いてるじゃないか
間違いを認めると死んじゃうんだろ 理論はtheory 論理はlogic 気づいても現実との不整合があったときは自己が優先
>>946 いや。だから、
一番右が現在で
一番左が過去です。
現在から過去に向かって読むとき、
右から左に向かって読む。
なので、一番左が0地点である。
C:\Users\owner>
int a = 0;
C言語の文法も一番右が現在で、
一番左が過去。
現在から過去に向かって読むので、
右から左・・後ろから前になる。
コンパイラがコードを読むは、
時が動いています。
解りやすくジョジョで例えると、
コードを書く時点では、DIOが時を止めている。
そして、読む時点になると、「そして、時が動き出す・・」ってなって、
現在をスタート地点、過去をゴール地点に定めて、
そこに向かって読むから、右から左になる。
ずいぶん活発なスレですね。 ゲームの完成が楽しみです。
したらば、これはどうなる? c=1+2*3;
■←これをカーソルとする C:\Users\owner>■ ■は↑の場所から、←左にむかって読む。 なので、行の0列目が、ゴール地点。 なのでどこが文章の終わりなのかが、 コンピュータは理解できる。 int a = 0;■ ↑ これもカーソルはあの場所から、←左に向かってよむ。
>>963 >>966 素朴な質問だけど、初心者のためを思って独自に工夫して説明してるの?
それとも、コンピュータ内部でそういう動きをしているから、その説明をしてるの?
どっち?
>>966 面白いギャグですね。今度友達に使ってみます。
c=1+2*3; 1.; 2.3 3.* 4.2 5.+ 6.1 7.= 8.c ↑ こんな感じに後ろから読んで 一覧にする。 この中で一番優先順位の引くのはどれ? とコンピュータが考えた時、=が一番低いと判断し、 7.の=と8.のcを後回しに考えるように判断。 行の最後まで読んだら、 次に今度は逆に読む。 1.c 2.= 3.1 4.+ 5.2 6.* 7.3 8.;
>>969 もういいよ、見てて悲しいから…
誰にだって誤解はあるんだから、もう諦めてよ。
1.c 2.= 3.1 4.+ 5.2 6.* 7.3 8.; 後ろから前に読んで =が理解できたら、 今度は、前から後ろに向かって読み。 今度は優先順位の一番高いのはどれ?と コンピュータは考える。 *が一位 +が二位 なので、6.を先に計算してから、 4.を計算する。 各演算子には、「左の値を右の値に」という意味があるので 2×3をやってから、1+6をやる。
>>972 a=
a
+b;
こういうCソースの一部はどう解釈されるの?
C言語では、文字列はNULL終端で、NULLのある場所は前から探して見つける。 って習いました。 だって前から見ていかないと、そもそも後ろ(NULLのある場所)が 何処なのか分からないから。 VBなんかは、文字列の先頭に文字列の長さを持っていて最後の位置が何処なのか分かるみたいですけどね。
kazukiはどんなコンピュータを使ってるんだろう。
うわ・・やべwww 気が付いたら、 もう埋まりそうだ・・(^^;
>>976 int a; a=0; a=a++; a=2; printf(a);
これはどうなる?
演算の順番は、ANSI規格で規定されている。 この順にする。 @演算子の優先順位に基づいて 順に演算される。 A演算子に基づいて結合規則が当てはめられる。(その部分だけの向きを意味する) B演算子の優先順位が同じ場合は、向きはどちらからでもよい。 Bの説明は、 c=1+2+3 この場合は、 1+2+3でもよい、 3+2+1でもよい。 順番に依存するコードは機種依存があるので悪いコードである。 もし、最新のANSI規格で変更になったのならば、教えてください。
大丈夫!安心のKAZUKI企画だよ!
KAZUKI規格に厳密に準拠したKazukiコンパイラです
int a = 0; ↑ これを入力するとき、 1.i 2.n 3.t 4.スペース 5.a 6.スペース 7.= 8.スペース 9.0 10.; こんな感じに一文字ずつキーボードから入力しているでしょ? だから、入力している地点で、ゴールはすでに解ってる。 もっと細かく言うと、 キーボードのキーを押して「文字がディスプレイに表示」もプログラムが動いています。 キー入力もリピート状態で、 次の入力をコンピューターが待っている状態です。 そこでキーを押すと一瞬でプログラムが動いて終了し、 押したキーがディスプレイに表示される。 なので、どこがゴールなのかは、 すでにコンピュータは解ってる。 知りたいのは、スタート地点。
突っ込みどころ満載
そろそろ釣り宣言を出して終わらせて欲しくなったw
>>981 なんでスタートが分からないのにゴールが分かるの?
ソースを他から持ってきてもゴールは分かるの?
じゃあ、これを 次回までの俺からの宿題にしておくよ。 俺が言っている「右から左=後ろから前」を詳しく調べて、 次回までに納得しておいてください。 上の宿題よりもこっちの方が面白いかもね。(^^
したらば、 Kazukiは、どのコンパイラを使っていますか? Borland C++ですか?
>>988 Kazu...いや、VCしか使えないと思う
30年ほど昔のPCはカセットテープしかなくて、 カセットテープから一文字づつ読み込んでコンパイルしていた。 2パスだから2度読みする。それはアセンブラコンパイラ。
それでは、皆さん! ここまで付き合ってくれてありがとうございます。 次回スレはもちろん立てますが、 当スレでは現スレ完結でいきますので、 このスレはこのスレで完結です。 なので、次スレのリンクは貼りません。 次スレを立てたなら そこから新たなスタートです。 このスレを知らない人が、 次スレから参加することもありえます。 では、皆さん。 また会える日まで、お元気で!(>▽<
このバカにも「目を背ける」以外の逃避ができなくなるような反例がないもんかな
ume ほ〜た〜るの、ひ〜か〜り〜♪
>978 結合は同一順位の演算順序じゃなかったっけ もし勝手に演算順序変えられるとover/underflowしたり誤差が捨てられたりして困るんだが >981 ゴールもスタートもわかんねーよ cpuに全てを見渡す能力はついちゃいねーよ
「そんなのは俺にはどーでもいい」 これで逃げるから無理w
「動けばいい」とか言ってたしねえ
動かないんだけどね
アナウンス:このスレは終了しました。 まもなく、このスレは閉幕いたします。 皆さん、当スレの御アクセス御投稿、まことにありがとうございました。
結局都合が悪いのはスルーかw
1000ならbakazuki
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。