みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

頭の良い人・悪い人 vs 未定義動作

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

頭の良い人・悪い人 vs 未定義動作

投稿記事 by みけCAT » 6年前

fly5728 さんが書きました:

CODE:

#include 
#include 

int main(){
	int a;
	char c;
	a = 999990;
	c = '9';
	a += atoi(&c);

	printf("%d\n", atoi(&c));
	printf("%d\n", a);

	return 0;
}
これを実行すると
9
1000086
という結果になります。どうしてでしょうか。
例えばこの実行結果を見た時・・・
miteigi-atamanoiihito-20171231.png
頭の良い人
miteigi-atamanowaruihito-20171231.png
頭の悪い人
「未定義動作だ!動作は不定!」と言って思考停止してしまうのは、頭が悪いでしょう。
「どうしてでしょうか。」と聞かれているので、実際にどうしてこうなったのかを考えるべきであると思われます。

そういえば、ロクでなし魔術講師と禁忌教典にも、
「ショックボルト(雷で攻撃する魔法)の呪文の区切り方を変えると失敗するが、どう失敗するか?」という問いに対し「ランダム」と言っている場面がありました。
実際はランダムではなく、何らかの規則に基づいて結果が変わるらしいです。
(この世界での)魔法もプログラムも、もしかしたら実行するハードウェアは違うけど似ているのかもしれないですね。
オフトピック
このトピックの投稿は2017年8月なのに、投稿しようしようと思ってこんなに遅くなってしまった…(´・ω・`)

コメントはまだありません。