5年ほど通っている個人の美容師さんとの会話。
Y「やあー最近疲れててこうノンビリしたいんすよね」
美「ですよねー。あれだ。釣りとかどうですかねー?」
Y「いいすねいいすね! そういえば前一回ワカサギ釣りいったんすよ」
美「あー、いいなー! あたしも行ってみたいんよー。釣れた?」
Y「がんがん。二人で30匹」
美「すごいねー。餌とかってあれだよね。気持ち悪い奴」
Y「あ、知ってます? はえのウジっすよ」
美「うんうん」
Y「まあ釣った後ウジ食ったワカサギ天ぷらで食ったんすけどね」
美「まあそう考えると野生の魚なんて何食ってるか分かんないよね」
Y「あのウジを食ってるって分かってるだけ幸せみたいな? つーか美味いんすかね? ウジ」
美「あー。意外と?」
Y「イモ的な?」
【ニコ動でゲーム実況してました。】
ニコニコ動画ゲーム実況一覧
【twitter】気軽にフォローしてください→@yhei_hei
char型を文字列以外の用途で用いちゃいけない訳
急に思い出したけど僕は開発者なので、たまには開発者っぽいことも書いていこうと思う。C言語の話。先日char型の変数のせいでえらい目にあった。
簡単なコーディングなので見てみてほしい。例えば下記のようなコード。
char flag = -1;
if (flag == -1) {
hoge();
}
このコード、char型のflagが-1になっていたら、hoge()関数が実行されるんですが、先日僕がこのようなプログラムを動かしたところ、どうもhoge関数が実行されない。だってif文の前で-1ってやってんだよ!? 意味分からないじゃない?
したらお前、ここがC言語というかコンパイラの罠ですよ。
if(flag == -1)
の判定文。なんとflagが4バイトのintにキャストされてたわけです。しかもえらく変な感じでキャストされてた。charは1バイトの整数値なので、それがintにキャストされるとどうなるかと言うと、
符号付きcharの-1の16進数表記 : FF → -1
↑を4バイトintにキャストしたときの16進数表記:00 00 00 FF → 255
つまり僕が直前で-1と定義した値がすばらしきコンパイラさんのおかげで255になっていたわけです。そら駄目だ。
もちろん頭のいいコンパイラによっては、intにキャストしたとしても-1として扱ってくれる事もあります。が、僕のプロジェクトで使ってる妙な野良コンパイラはアホなのでこういうことになったわけ。
でもでも。コンパイラがアホだからーで済ませる問題ではない。このコード、頭いいコンパイラでコンパイルされるとは限らないからだ。通常、書いたコードが他に流用されないなんてことはあり得ない。色んなプロジェクトで流用されると考えたほうがよい。流用されるプロジェクトによってはアホコンパイラもあるだろうし、賢いコンパイラもいるわけで。そういった事を考えるとコンパイラ依存の上記コードは絶対書いちゃいけない。
だから、こう直しましょうね。っていう話。
int flag = -1; ★
if (flag == -1) {
hoge();
}
バカみたいな話だけど、misra-cのコーディング規約にも明記されている話だったりする。
http://www.openrtp.jp/wiki/_hara/ja/RtORB/MISRA-C-RULE.html
型
6.1 R 単なるchar型は、文字データの格納及び使用に限って用いなければならない。
6.2 R signed char型及びunsigned char型は、通知データの格納及び使用に限って用いなければならない。
この1文だけ見ると、なんで? って思いますがこういう事例があるとよく分かりますね。
そもそも僕がこんなflagをchar型で定義してしまったのは、なぜかAndroidで書いたコードをC言語に流用してよ? 流用だから簡単でしょ? 3キロLineを1ヶ月で。とかキチガイみたいなことを言われ、時間もねーしjavaのbyte型をそのままcharに置換してたからで、最初からC言語で書いてたらこういうことはしなかったっつーかぶつぶつ……
【ニコ動でゲーム実況してました。】
ニコニコ動画ゲーム実況一覧
【twitter】気軽にフォローしてください→@yhei_hei
温泉と力士と勝負と妄想
3連休につき妻と温泉に行ってきた。100%天然温泉の湯につかりながら、非常にリラックスする。露天風呂の正面にはテレビも設置してあり楽しい。
ちょうどテレビでは大相撲がやっていた。お相撲さんのぶちかましを観ていたらたいそう興奮する。大相撲なんか、小さい頃は何が楽しいか分からなかったが、29になった今観ると、テクニックやら迫力やらが半端無くて、けっこう楽しい。
こんな妄想もはかどる。
例えば、力士と俺がエスポワール号的なところに監禁され、ゲームをさせられる。ゲームの内容は力士と俺が相撲で対決し、力士が1000連勝できれば力士の勝ち。力士が1000連勝できなければ俺が勝ちと言った具合。負けた方は殺されるみたいな。
この勝負、一見力士が圧倒的に有利と思われるが実は違う。力士は1回俺に勝つのはたやすいが、1000連勝するのは大変に困難だ。なんたって1000戦するうちに、俺が死んでしまえば力士の負けだし、俺がなんやかや理由を付けて土俵に立たなければ、力士は負けはしないが勝てもしない。そのかわり俺も勝てない。双方確実に勝てる方法を模索するのが難しい。
探り合いをする俺と力士を観ているしたり顔の第三者に
「この勝負……単純な相撲の勝負ではない! これは……心を摘む戦い……!」
とかつぶやかせたりしたら、漫画的に盛り上がるだろうなとか思ったり思わなかったり、まあそんな感じ。
最終的に、俺と力士が「あー、やりますよやりますよ」とか言いながら、いっこうに勝負しないのが、勝ち負けがつかず誰も死なず、平和的でいいよなーとか。やりますやります言いながらずっとエスポワール号で優雅な生活を送るみたいな。
そんなことを考える休日。
【ニコ動でゲーム実況してました。】
ニコニコ動画ゲーム実況一覧
【twitter】気軽にフォローしてください→@yhei_hei
【ネタバレほぼなし】るろうに剣心、後編の見所
Y「剣心どうだった?」
妻「超面白かった。よかった」
Y「うん俺もよかった。ただ一個不満あるわ」
妻「実はあたしも。蒼紫のとこ」
Y「分かる。あいつさ。最後の大人数の大立ち回りのときに」
妻「そう。一瞬さ」
Y「そこいつでも相手斬れるだろーってときに」
妻「無意味にかっこいい構えとかしてたよね」
Y「分かる!」
妻「上から大人数映すカメラワークだったから余計目立った」
Y「あれだ。暴れん坊将軍の悪役みたいな。なんで今松平健斬らないのみたいな」
妻「たぶん全編通してそういう人も中にはいたんだけど」
Y「カメラワークでうまくごまかしてたのに」
妻「最後の最後で蒼紫がやっちゃったみたいな」
Y「あそこだけ、後付けでCGの煙とかいれとけばよかったのにな」
妻「蒼紫消せみたいなね」
Y「まあそううまくは行かないんだろうな。CG班と撮影班別れてるだろうし。一存で消せないよな」
妻「そんなもんだよね」
Y「組織だよな」
【ニコ動でゲーム実況してました。】
ニコニコ動画ゲーム実況一覧
【twitter】気軽にフォローしてください→@yhei_hei
脈絡のない猫好き達
母へメールアドレス変更した旨をつたえると下記のような返信が来た。
From:母
了解。
今週北海道全域で大雨に見舞われ、土砂崩れなどの恐れから僕のアパートの周辺でも避難勧告が出まくっていた。そんな折に父からメールが。
From:父
大雨、大丈夫?元気ですか?ゆずの毛、少し伸びましたよ
父さん母さん息子は猫同様元気ですよ。
【ニコ動でゲーム実況してました。】
ニコニコ動画ゲーム実況一覧
【twitter】気軽にフォローしてください→@yhei_hei