2016年08月

6:23
ローソンにて
クレカ-544




今日は給料日すわ。先月の未払い分が入るから今回はスゴイよお。
予定では昼すぎに358000円くらい入るはず。大体の計算ではね。



11:44
給料きたああああ!!



343839か、、予想より少ないな、、計算間違いかな、、だといいんだけどね、、



16:25
ローソンにて
クレカ-805






20:09
〆よか。


407394-924-544-805=405,121 おけ。

財布は変化なし。

口座は上記。


<全財産>
口座 1069191
財布 10,135
クレカ 405,121
合計 1,484,447

もう額が増えすぎてよくわからないな。金持ちの悩みってやつさベイビー。


今日も休み。

なんか台風の後だから仕事が少ないらしい。明日からは通常営業だと思う。

なんでもいいよ。おやすみ。


21:54
ローソンにて
クレカ-924




今日は買い物はしないつもりだったのにさ、ビールが飲みたくてさ、ついね。。


詳細なルールはこちら。 



攻略したいコードは ↓ です。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#ifdef _CONSOLE
 #define DUNSIZE_WIDTH 79
 #define DUNSIZE_HEIGHT 17
#else
 #define DUNSIZE_WIDTH 61
 #define DUNSIZE_HEIGHT 41
#endif
__________| 「ダンジョンゲームプログラミング」から引用

ようやくこいつを攻略できますな。ってかもう攻略する必要もなくない?なんとなくわかったよねえ?
#ifdef _CONSOLE でさ、_CONSOLE ってマクロが定義されてればその後のコードがコンパイルされるけど、定義されてないならコンパイルされないわけよ。今回は _CONSOLE は定義されてないわけじゃん?どこにも #define _CONSOLE ってコードが書いてないじゃん。コードの全容を見てもさ。だからそういうことなんだけどさ、#else があるからさ、その場合はちょっと事情が違ってさ、ってか else と同じなんだけどさ、分岐させられるわけよ。 「マクロが定義されてれば」って条件が #else以降はさ「マクロが定義されてなければ」になるわけよ。
んで、今回は _CONSOLEマクロは定義されてないわけだから、#else以降はコンパイルされるってわけよ。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
// #define _CONSOLE ってコードがない。イコール _CONSOLEは定義されてない。

#ifdef _CONSOLE
// これ以降はコンパイルされない。
 #define DUNSIZE_WIDTH 79
 #define DUNSIZE_HEIGHT 17
#else
// ここからはコンパイルされる
 #define DUNSIZE_WIDTH 61
 #define DUNSIZE_HEIGHT 41
#endif
__________| 「ダンジョンゲームプログラミング」から引用して変更

こんな感じ。
説明はこんなもんなんだけどさ、疑問が一つあるよね?

「# が頭につくとコンパイルの前に処理されるはずなんだから、条件が真でも偽でも関係なくない?」

こう思ったんだけどさ、コンパイル云々って考えるからダメなんだろね。条件が偽なら「無効になる」って考えるべきなのかも。# のついたコードであっても、それ自体が無効になる。存在しなくなる的な?たぶんさ。

ちなみに、もし _CONSOLE が定義されてたらどうなるか?

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#define _CONSOLE 

#ifdef _CONSOLE
// _CONSOLEマクロが定義されてて条件式は真だから有効。
 #define DUNSIZE_WIDTH 79
 #define DUNSIZE_HEIGHT 17
#else
// ここからは無効
 #define DUNSIZE_WIDTH 61
 #define DUNSIZE_HEIGHT 41
#endif
__________|

こんな感じになるわけだね。
適当にサンプルコードも書いてみよう。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#include <stdio.h>

#ifdef _CONSOLE
 #define DUNSIZE_WIDTH 79
 #define DUNSIZE_HEIGHT 17
#else
 #define DUNSIZE_WIDTH 61
 #define DUNSIZE_HEIGHT 41
#endif

int main(void)
{
int num = DUNSIZE_WIDTH ;
printf( "%d¥n", num );
return 0;
}
__________|

実行すると「61」と表示されるわけ。

もう、いいよね。こんなもんで。大体わかったっしょ。
あ、もう一つだけ。
マクロの定義ってさ、「置換するテキスト」がなくてもいいらしいよ。「#define マクロ名」だけでいいらしい。今回でいうところの「#define _CONSOLE」だけでもいい そうするとマクロと置換するテキストはないんたから意味がない感じもするけどさ、別にそれでもいいんだってさ。

今回はここまで。



9/1の-26:27更新。709時間6分オーバー。
次回更新期限は9/2の-662:54。



詳細なルールはこちら。 



攻略したいコードは ↓ です。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#ifdef _CONSOLE
 #define DUNSIZE_WIDTH 79
 #define DUNSIZE_HEIGHT 17
#else
 #define DUNSIZE_WIDTH 61
 #define DUNSIZE_HEIGHT 41
#endif
__________| 「ダンジョンゲームプログラミング」から引用

今回こそ攻略したい!


「UNKO を 72 に置換する」ってマクロを定義したいとするじゃん。その場合は、「#define UNKO 72」って書けばいいんだったよね。
んで、この UNKO ってマクロが定義されてる場合だけコンパイルしたい文があるとするじゃん。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#include<stdio.h>

#define UNKO 72 

#ifdef UNKO

int main()
{
int a = UNKO;
printf( "%d¥n", a );
return 0;
}

#endif
__________|

こんな感じで、実行すると「72」と出力されるコードなんだけどさ、これで #define UNKO 72 をコメントアウトするとさ、なんにも出力されなくなるわけよ。main関数が丸ごとコンパイルされなくなるわけね。UNKO が定義されないわけだからさ。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#include<stdio.h>

// #define UNKO 72 

#ifdef UNKO

// main関数が丸ごと消えてなくなる
int main()
{
        int a = UNKO;
        printf( "%d¥n", a );
        return 0;
}

#endif
__________|

実行しても何も表示されないよ。

とまあこんな感じだよ。#ifdef ってさ。なんとなくわかったよね?わかんなくてもいいよ。「Programming Place Plus」ってサイト見ればパツイチだからさ。
じゃあなんのために僕が解説するのか?っていうとさ、知らないよそんなの。なんでも聞くなよ。

今回はここまで。



8/31の-3:48更新。782時間27分オーバー。
次回更新期限は9/1の-735:33。
っしゃ返済モード突入やでええ!!



↑このページのトップヘ