c/c++

動きますよね?gotoでも

と、 id:ntnekさんからTBをいただいたので、 もちろん、gotoで脱出すれば良いんですけどね。 …いやなんか昔、gotoだとブロック脱出時にデストラクタが上手く動かないと信じていた時期があって、その影響なんですが。 …あれ?動きますよね、デストラクタ?got…

do while

と、最近、 do { ... if (...) { break; } ... } while (0); というソースを読んでなるほどなあ、と思った次第。 実は常識テクニックだったりしますか。

信仰

きむら(K)さんの書いているものを読んで思った事。 んとですね、わたしが「信仰」という単語を持ち出したのは、 確たる理由もなく相手の状況を一顧だにせずC/C++を押し付ける(曰く「必要だ」 「ポインタが理解できれば云々」)その態度が、宗教(特に新興宗教…

C++が最強に決まってるだろ!

と、まあ、 EEとか、そにょ2からそにょ3とかそにょ999とかまで行きそうな界隈のお話。 とりあえずC++は初心者は触んな。 少なくともメンバ関数がどうやって呼ばれているのかを理解するまで触るんな。 で、 色んな言語を触って気持ちに余裕ができてきた…

少しだけ安全なnew/delete

昨日のsafe_deleteに対してご指摘があったの追記します。 mb2syncさんが 「これは二重deleteのバグを隠蔽するので非常にまずいと思いますよ」 とおっしゃられてふむふむ、と。 自分がテストで書いたコードのがいようはこんな事を意図していました。 void* op…

Safetyなdelete

id:uskzさんが こちらdeleteを使うときのマクロ - ゲームが作れるようになるまでがんばる日記で、 コメントで書かれていたこれは良いアイデア。 template <typename T> inline void safe_delete(T*& p) { delete p; p = 0; }; template <typename T> inline void safe_delete_array(T</typename></typename>…

演算子オーバーロード? 演算子オーバーライド?

会社でこれって間違いやすいよね、 結局どっちなの? みたいな感じで訊かれたりしたので、 実例を交えてエントリしてみる。 例として演算子+=を持ち出す。 class Foo { public: Foo(int value) : value_(value) { } Foo& operator +=(const Foo& f) { value_…

C++の素敵

職場でC++における(dynamic_castではない)ダウンキャストは危ないよ、 って話があがっていたんだが、 これは普通に通ってしまうコードなので慣れてない人はやりがち。 みたいな話を思い出したので書いておく。 class B { public: void hoge() { printf("Ba…

#define private public

というのを見かけて、ちょちょちょ!! と思った。

実例で学ぶゲームAIプログラミング

Programming Game AI by Exampleの邦訳。 「ゲーム開発者のためのAI入門」の続編。入門の方は簡単な仕組みや、アルゴリズムの紹介だったけれど、 こちらはもっと突っ込んだ事をやっていて、 きちんとした有限ステートマシンの実装が載っている。他にも自立エ…

Xorshift

超高速疑似乱数生成器だそうで、 とにかくちょっぱや、省エネ、 unsigned long xor128(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123; unsigned long t; t=(x^(x<<11));x=y;y=z;z=w; return( w=(w^(w>>19))^(t^(t>>8)) ); } こん…

ぱでぃんぐ、ぱでぃんぐ、ぱでぃんぐー

と脳内で再生されたので。via ときどきの雑記帖様。 実は今回の話題にはまだミステリーが残っている。 例えばリストFのような二つの値を持つ 構造体へのポインタに1を足すと、 いったいいくつ増えるだろうか? 「int型が4バイト、char型が1バイトなので5増え…

キーボード拘るっしょ

またきたみりゅうじネタ。 「当然キーボードに拘るよね?」 いやいや、キーボードなんかこだわんねー、のが普通ですよ的な話。 会社からの支給品を、疑問も抱かず そのまま使うってのが大半じゃないかな。 SEなら、当然キーボードにこだわるよね?|【Tech総…

C言語とかいろいろ言及もと

なんかもめ事, 配列とポインタ, 高専生 - HsbtDiary(2007-08-17) なんかもめ事, 配列とポインタ, 高専生 - HsbtDiary(2007-08-17) プログラミングと初心者, ポインタの難しさ - まちゅダイアリー(2007-08-18) プログラミングと初心者, ポインタの難しさ - ま…

配列とポインタの私的まとめ

まず、配列とポインタは明確に別物である。 ただし、a[n]は*(a + n)と等価である。 a[n]と書けるならば*(a + n)とも書けるし、 *(a + n)と書けるならばa[n]とも書ける。 こうした意味では配列とポインタは密接な関係を持つが、 ポインタ変数と配列変数は明確…

恐るべし第三勢力!

404 Not Found様。この第三勢力見たことも聞いたこともありませんでした。 世界は広い。 int * a;派とは。そして、TBを戴いたので反応。 int *a,b | 眠る開発屋blog確かに、 int* a,b; は紛らわしいですよね。 一応解説。 これ、int*であるaとbを宣言してい…

そうそうC言語には多次元配列という楽しい要素があった

odzさんのをみて「配列とポインタ - odz buffer」反応。 さて、何が楽しいのかというと自分が楽しいだけです。 すみません。 で、最近の言語は多次元配列を持っておらず、 単に「配列の配列」で処理している。(C言語もarray of arrayです) これが多次元配…

int* hoge;か、int *hoge;か

不毛な議論。 個人的にはint* hoge;派だったりする。 int* func( int* arg1, int* arg2 ) or int *func( int *arg1, int *arg2 ) 不毛なんですけどね。

追記・配列はポインタ?

みずしまさんからの指摘をうけて追記、 int array[] が int *arrayの構文糖衣であることや、 式array[i] が、*(array + i)の構文糖衣であることは ご存知なんですよね? この辺り、C言語って面倒ですよねorz... int a[10]; 1[a] = 999; 4[a] = 666; こんな風…

配列はポインタ?

確かにC言語の素の配列は単純に 「必要なサイズだけメモリを連続的に確保しただけ」 であって、 関数に対して配列を(そのまま)渡すことすらできない訳で、 結局サイズとか色々なものの面倒を見なければならない点ではまさにポインタそのもの同等ではありま…

re:ああ海原雄山やりてえw

内容より寧ろ「ああ海原雄山とやりてえw」と見えてしまった僕は(ry via 404 Not Foundさん。 あらかじめHPで調べてあるので、削除するときは、その削除したい行をまたいで、前後 のリストを繋げるといった概念的なのは大体理解できました。 404 Not Found …

撤退か逃走か

id:minekoaさんからTBをいただいてしまった。 やっぱり経験者としての認識は、 OOPもC++も知らない状態で時間もなく始めようとするのは自殺行為ですよね、みたいな……。 まったく希望が見えなくてすみません。 きむら(K)さんも 特にJ(で始まる名前の某)氏の意…

例えば、C言語を避ける

まぁ、これは楽勝(?)で、 C言語を使うような会社/現場に行かない カーネルとか言語のソースを読まない C++に興味とか持たない レジスタとか叩こうと思わない エトセトラ、エトセトラとかで実現できる。 若さ故の過ちということでC言語に挑んでみるという…

タイプセーフなenumが欲しいねぇ

via C++におけるタイプセーフEnumのイディオム - どことなく技術屋な日々様。 {C++におけるタイプセーフEnumのイディオム} (どこかからの引用。どこで見たかは忘れました……。すみません) id: hanahiさんの頁でした。そして、URLを見たらbleis_tiftさんのサ…

ポインタってそんなに難しい?

まだ引っ張るか、というか波及した関連に対する雑感とか。 一言で言ってしまうとポインタってプログラム空間におけるアドレスの抽象化表現でしょ? とかいってやっつけてしまう事はできないのかなぁ。(いや、無理なんですけどね) そもそもポインタがない言…

re:C言語は何が難しいのか?について

みずしまさんのTBにレスポンス。 が、あえていうなら「決まり事」の範疇には違いないのでいかに構文が腐っていようと習得できない訳ではない、と言えます。 (ポインタや配列という)概念に対する理解は、単なる「決まり事」の範疇ではないと思います。 Mac OS…

C言語は何が難しいのか?

みずしまさんの指摘。 誰かが既に書いてた気もするんだが、「C言語が難しい」と言った時に、C言語特有の腐った宣言周りの構文および配列とポインタに関するセマンティクスが難しいのか、それとも一般的な配列とかポインタなどの概念の習得が難しいのかはち…

Cの老害?

答えなんてでないのは承知の上で、 言及というかスタンスで。 ちょっと前に入門にCはどうよ、というネタで盛り上がっていた、というかネタの拡散に一役買っていた気もするのだけども、ふと自分が以前書いていたネタを思い出したのでリンクを張っておく。 「…

C++のエッセンス

と、関係ないのですが無茶苦茶歯が痛くて苦しんでます。 珈琲を飲んで誤魔化してみるテスト。で、Essential C++の事。 「C++ プライマー」の人が書いてる本。(スタンリーB.リップマン) 所謂「C++ プライマー」や「プログラミング言語C++」は分厚すぎるの…

!C言語知らない奴ってプログラマじゃなくね?

そういえばC言語を知らない人に 「C言語って文字列型がないんだよ」 と言ったら驚いていた。確かにC言語は配列は自身の長さを知らないし、 文字列も自分の長さを知らない。 正規表現だって標準ではない。 僕はこれが当たり前と思うけれども、 そうでない言語…