DXライブラリが一瞬で消えます

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
みけCAT
記事: 6247
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: DXライブラリが一瞬で消えます

#101

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

エルフ さんが書きました:ソフト屋さんのデバッガ方法で調べた結果、乱数の値が-858993460になっていました

これはどういう事でしょう・・
int a = GetRand( 3 );と書けば0または1または2ではないんですか?
-858993460になる理由は(修正されたソースが提示されていないようなので)わかりませんが、
GetRand( 3 )はDXライブラリの仕様では0または1または2または3のはずです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#102

投稿記事 by エルフ » 5年前

みけCATさん
あ、3も入るのですね

今のコード張ります

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int )
{
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定

	int PC = 0; //PCの初期化
	int b = 0; //bの初期化

	SRand(GetNowCount());  // 乱数初期化

	while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 )
	{ //ここからメインループ
		
		int a = GetRand( 2 ); //乱数0,1,2
		int Col = GetColor( 255,255,255 );
		
		if( b = 0 ) //証拠が何もないなら
		{
			b = 1; //前準備をした証拠
		} //証拠が何もないならここまで

		if( b = 1 ) //前準備をした証拠があるなら
		{
			DrawFormatString( 0, 0, GetColor(255,255,255), "「ジャンケン!」");
			DrawFormatString( 0,20, GetColor(255,255,255), "あなたの手を入力して下さい(グー:1 チョキ:2 パー:3)");

			if( CheckHitKey(KEY_INPUT_1) == 1 )//1キーを押したなら
			{
				b = 2; //1キーを押した証拠
				if( b = 2 ) //1キーを押した証拠があるなら
				{
					if( a = 0 )
					{
						PC=1;
					}
					else if( a = 1 )
					{
						PC=2;
					}
					else if( a = 2 )
					{
						PC=3;
					}
				}
			}

			else if( CheckHitKey(KEY_INPUT_2) == 1 )//2キーを押したなら
			{
				b = 3; //2キーを押した証拠
				if( b = 3 ) //2キーを押した証拠があるなら
				{
					if( a = 0 )
					{
						PC=4;
					}
					else if( a = 1 )
					{
						PC=5;
					}
					else if( a = 2 )
					{
						PC=6;
					}
				}
			}
			else if( CheckHitKey(KEY_INPUT_3) == 1 ) //3キーを押したなら
			{
				b = 4; //3キーを押した証拠
				if( b = 4 ) //3キーを押した証拠があるなら
				{
					if( a = 0 )
					{
						PC=7;
					}
					else if( a = 1 )
					{
						PC=8;
					}
					else if( a = 2 )
					{
						PC=9;
					}
				}
			}

			if( PC = 1 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:グー");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:グー");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あいこです。");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}

			else if( PC = 2 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:グー");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:チョキ");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あなたの勝ちです!");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}

			else if( PC = 3 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:グー");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:パー");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あなたの負けです・・・");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}

			else if( PC = 4 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:チョキ");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:グー");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あなたの負けです・・・");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;

				}
			}

			else  if( PC = 5 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:チョキ");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:チョキ");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あいこです。");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}

			else if( PC = 6 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:チョキ");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:パー");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あなたの勝ちです!");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}

			else if( PC = 7 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:パー");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:グー");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あなたの勝ちです!");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}

			else if( PC = 8 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:パー");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:チョキ");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あなたの負けです・・・");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}

			else if( PC = 9 )
			{
				DrawFormatString( 0, 40, GetColor(255,255,255), "「ポン!」");
				DrawFormatString( 0, 60, GetColor(255,255,255),"あなた:パー");
				DrawFormatString( 0, 80, GetColor(255,255,255),"あいて:パー");
				DrawFormatString( 0, 100, GetColor(255, 255,255),"結果:あいこです。");
				DrawFormatString(0, 120, GetColor(255, 255, 0), "ESCキーで終了します。");	
				if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 )
				{
					break;
				}
			}
		} //前準備をした証拠があるならここまで
	} //ここまでメインループ

	DxLib_End(); // DXライブラリ終了処理
	return 0;
}

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#103

投稿記事 by エルフ » 5年前

すいません

やり直したら0または1または2になってました

さっきのはなんだったんだろう・・

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#104

投稿記事 by エルフ » 5年前

1キーも押してないのに,29行目のifを通り、34行目のa=0のifが通ってPC=1の処理が必ず行われる理由がまだ理解できません・・

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

Re: DXライブラリが一瞬で消えます

#105

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

エルフ さんが書きました:1キーも押してないのに,29行目のifを通り、34行目のa=0のifが通ってPC=1の処理が必ず行われる理由がまだ理解できません・・
理解できなくて当然です。
なぜなら34行目のa=0のifの中身のPC=1;が実行されるのは(まともなコンパイラでは)ありえないはずだからです。
デバッガなどで本当にそこを通っているか確認し、通っているのであればあなたのコンパイラは狂っているので、
まともなコンパイラに乗り換えましょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

much

Re: DXライブラリが一瞬で消えます

#106

投稿記事 by much » 5年前

本筋じゃないけどちょっと気になったこと
エルフ さんが書きました:

コード:


		int a = GetRand( 2 ); //乱数0,1,2
		int Col = GetColor( 255,255,255 );

とりあえず メインループから出してください
どっちでもいいことはいいんですが
毎ループ変数宣言するのはよくないかと

それと出来ればColも使ってあげてください ( Colさんちょっとかわいそう(´・ω・`) )
DrawFormatString中のGetColor(255,255,255)を置き換えることができます
以上のことを踏まえて
ついでに色も増やしちゃって
以下ようにするといいかも

コード:

int ColWhite = GetColor(255,255,255); //白
int ColYellow = GetColor(255, 255, 0);  //黄色

int a;

while(/*ホニャララ*/)

a=GetRand(2);

/*--------------*/

                DrawFormatString( 0, 100, ColWhite,"結果:あいこです。");
                DrawFormatString( 0, 120, ColYellow, "ESCキーで終了します。");

/*--------------*/


much

Re: DXライブラリが一瞬で消えます

#107

投稿記事 by much » 5年前

毎ループ,aの値をランダムにするのも不適切だから
さらにこうかけますね

コード:

int ColWhite = GetColor(255,255,255); //白
int ColYellow = GetColor(255, 255, 0);  //黄色

int a;

while(/*ホニャララ*/)

    if(b=0){
        a=GetRand(2);
        b=1;
    }

/*--------------*/

                DrawFormatString( 0, 100, ColWhite,"結果:あいこです。");
                DrawFormatString( 0, 120, ColYellow, "ESCキーで終了します。");

/*--------------*/


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

Re: DXライブラリが一瞬で消えます

#108

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

much さんが書きました:毎ループ,aの値をランダムにするのも不適切だから
さらにこうかけますね
かけません。if文の条件式が間違っています。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

顔芸

Re: DXライブラリが一瞬で消えます

#109

投稿記事 by 顔芸 » 5年前

条件式について何度か指摘はあったようですが,エルフさん自身,まだ気付けていない様子ですね.
以下の参考サイトの内容をよく読んでみることをおすすめします.

http://www.wakhok.ac.jp/~kanayama/C/99/node18.html
http://www.g-ishihara.com/c_co_01.htm
よくやる間違い
a = 10;
b = 34;
if (a = b){
printf("a == b \n");
}
この例は文法的には間違っていないが、良くやる間違いの一つである。 どこが間違っているかというと、
if の条件文が、比較演算の == では なく、代入演算の = になっている点にある。本来ならば、 a=10, b=34 なの で、a と b とは異なっており、
if 文の中は実行されない筈であるが、 実はこの例では実行されてしまう。比較演算の == を代入演算の = に間違えた だけなのだが、
実は、代入演算は演算なので演算結果が存在する。代入演算の 結果は代入した値になるという決まりなので、
a=b の結果は、b が 34 より 34 になる。これは、0ではないので、この代入演算の結果は真と判断される 訳である。
あと変数宣言の位置ですが,変数の生存期間を絞ることで,目で追わなければならないソースコードの長さを短くするという
考え方もあるので一概に悪いとも言えませんね.

http://feather.cocolog-nifty.com/weblog ... -a00a.html

私もこの間までループ外に変数を宣言していたのですが,最近は上記の理由から,積極的にループ内で変数を宣言するようになりました.
オフトピック
much さんが書きました: 私も昔お世話になったのですが
なんだかC言語を理解していることを前提としているような感じですよね.(悪いとはいいませんが)
まぁ,「指導」者を自称するのもどうかと思いますけどネ・・・;
much さんが書きました: どうも初めまして,今回指導に協力するmuchというものです。

much

Re: DXライブラリが一瞬で消えます

#110

投稿記事 by much » 5年前

みけCAT さんが書きました:
エルフ さんが書きました:1キーも押してないのに,29行目のifを通り、34行目のa=0のifが通ってPC=1の処理が必ず行われる理由がまだ理解できません・・
理解できなくて当然です。
なぜなら34行目のa=0のifの中身のPC=1;が実行されるのは(まともなコンパイラでは)ありえないはずだからです。
デバッガなどで本当にそこを通っているか確認し、通っているのであればあなたのコンパイラは狂っているので、
まともなコンパイラに乗り換えましょう。
そんなコンパイラがあるんですね(まあ普通 if文に代入演算子なんて使いませんが)

本当にそうかどうか以下のソースをコピペしてテストしてみてください

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){

    int a;

    DxLib_Init();   // DXライブラリ初期化処理

    ChangeWindowMode( TRUE );

    while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){

        if(a=0){
            DrawFormatString( 0, 0, GetColor(255,    0,   0),"あなたのコンパイラはa=0を通します。");
        }
        else{
            DrawFormatString( 0, 0, GetColor(   0, 255,   0),"あなたのコンパイラはa=0を通しません。");
        }
    }

    DxLib_End();    // DXライブラリ終了処理
    return 0;
}
文字の色はになりますか?
オフトピック
指導は不適切ですね・・・

アドバイザー?
う~ん,なんというべきか・・・

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

Re: DXライブラリが一瞬で消えます

#111

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

オフトピック
おまけ
混乱したくなければ無視してください。
► スポイラーを表示
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#112

投稿記事 by エルフ » 5年前

muchさん
緑色になりました

みけCATさん
VC++のものとから入ってるコンパイラなので、コンパイラ自体が狂ってるとは思えません
私のソースが間違っていて、私が勘違いしてるとかないですかね
それとデバッグがまだよく使いこなせません・・

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

Re: DXライブラリが一瞬で消えます

#113

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

エルフ さんが書きました:私のソースが間違っていて、私が勘違いしてるとかないですかね
大 い に あ り ま す 。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#114

投稿記事 by エルフ » 5年前

ですよねー

much

Re: DXライブラリが一瞬で消えます

#115

投稿記事 by much » 5年前

みけCAT さんが書きました: 大 い に あ り ま す 。
やめたげてー その煽り文字...

なんかそんな気はしてたけど


とりあえずバグをみつけだすには変数の値を調べてうまく行っているかを調べればいい
printf (今回の場合はDrawFormatString)を用いればいい

ってことで

これをメインループの冒頭に貼っつけてみて

コード:

 
           //見えづらかったら GetColor(63,63,63) を GetColor(255,255,255) に書き換えてください
            DrawFormatString( 0, 400, GetColor(63,63,63), "PC = %d , a = %d , b = %d " , PC , a , b);

これが前に話してたデバッグ技術というやつですよ
動作を確認するとき変数が見えてたほうがわかりやすいので
バグ(ミス)を発見しやすくなります

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#116

投稿記事 by エルフ » 5年前

muchさん
error C2065: 'a' : 定義されていない識別子です。とでます

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

Re: DXライブラリが一瞬で消えます

#117

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

エルフ さんが書きました:muchさん
error C2065: 'a' : 定義されていない識別子です。とでます
最新のコードかどうかわかりませんが、No:102のコードなら17行目、

コード:

        int a = GetRand( 2 ); //乱数0,1,2
        int Col = GetColor( 255,255,255 );
の次に入れてみてください。
もしくは、メインループの最後に入れるのもいいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#118

投稿記事 by エルフ » 5年前

みけCATさん
error C2374: 'Col' : 再定義されています。2 回以上初期化されています。
error C2374: 'a' : 再定義されています。2 回以上初期化されています。

とでました

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

Re: DXライブラリが一瞬で消えます

#119

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

エルフ さんが書きました:みけCATさん
error C2374: 'Col' : 再定義されています。2 回以上初期化されています。
error C2374: 'a' : 再定義されています。2 回以上初期化されています。

とでました
どんなコードにしたのですか…?
みけCAT さんが書きました:

コード:

        int a = GetRand( 2 ); //乱数0,1,2
        int Col = GetColor( 255,255,255 );
をさらに追加してはダメですよ…?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#120

投稿記事 by エルフ » 5年前

みけCATさん
間違えました
よく読まずにさらに追加してました・・

できましたw

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#121

投稿記事 by エルフ » 5年前

PCが常に1
aは乱数の動き(スロットのように回っている)をしていると思われましたが、キーを押すと全て1になってました・・

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

Re: DXライブラリが一瞬で消えます

#122

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

エルフ さんが書きました:PCが常に1
aは乱数の動き(スロットのように回っている)をしていると思われましたが、キーを押すと全て1になってました・・
コードに対して妥当な動作ですね。
なぜだと思いますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

much

Re: DXライブラリが一瞬で消えます

#123

投稿記事 by much » 5年前

みけCAT さんが書きました:
エルフ さんが書きました:PCが常に1
aは乱数の動き(スロットのように回っている)をしていると思われましたが、キーを押すと全て1になってました・・
コードに対して妥当な動作ですね。
なぜだと思いますか?
   どや
( ・´ー・`)< キーと変数の値が連動したから (不正解) )

[hr]

次のデバッグ技はコメント化

今のところ(2014年8月23日(土) 23:00 エルフさん投稿のコードで)
PCを1にする原因は
35行目:PC=1;
のみというふうに考えられますが

そこには
if( a = 0 )
とかいてあり
緑文字になった実験より入れなかったはず

そこで
35行目まで達するに至る
その他不要な部分を矛盾がないように
一気にコメント化してみてください
(//だと日が暮れるから/* */を使って)

今回の場合だと
48行目:else if ()
から
203行目: }
までが適切でしょう
(インデントしてあるから同じ高さで切ればOK)

それでやってみて
PCが1になれば
35行目が犯人
そうでなければ
犯人は他の場所にいるってことですよ
(見せかけの犯行ですね)


どんどんコメント化して動作確認をしてください

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#124

投稿記事 by エルフ » 5年前

muchさん
//と/* */ってどうちがうんですか?
ほぼ同じだとおもってました・・

much

Re: DXライブラリが一瞬で消えます

#125

投稿記事 by much » 5年前

much さんが書きました: それでやってみて
PCが1になれば
35行目が犯人
そうでなければ
犯人は他の場所にいるってことですよ
(見せかけの犯行ですね)
ちょっと説明不足だったかも
一部をコメント化すればその部分は仕事をしなくなる
仕事をサボらせた時に結果が変わっているってことは
その

一回一回削除&コピペでもいいですけど
面倒くさいので一般にコメント化します

オフトピック
コメント化の技としてもう一つあるのが
復旧能力です
少し書き換えて動かなくなると戻してとやると思いますが
戻し作業に失敗して
どこを戻し間違えたのかわからずに
動かなくなってしまうなんてことがあります
(潜在バグとなって残るともっと厄介)

変更前の部分はしっかりコメント化して
常に動く状態をキープしておきましょう

much

Re: DXライブラリが一瞬で消えます

#126

投稿記事 by much » 5年前

エルフ さんが書きました:muchさん
//と/* */ってどうちがうんですか?
ほぼ同じだとおもってました・・
コメント化出来る領域が違う
(違いがわかるように微妙に色変えてます)

// ・・・行末までのコメント化
/* */ ・・・複数行のコメント化

// バーカバーカ ←コメント化されている バーカ

/*
うんこ
うんこ
うんこ ←全部コメント化できている
*/


if(// /*コメント化できている→ゴミゴミ*/ゴミゴミ) //←コメント化できている
if(/* //コメント化できている→ゴミゴミ*/ゴミ...あっ)//←コメント化できてない

much

Re: DXライブラリが一瞬で消えます

#127

投稿記事 by much » 5年前

much さんが書きました:
エルフ さんが書きました:muchさん
//と/* */ってどうちがうんですか?
ほぼ同じだとおもってました・・
コレもやりがち

/*
バーカ
  /*
  アーホ
  マヌケ
  */

ケチ //←見えてる
*/

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#128

投稿記事 by エルフ » 5年前

なるほど
わかりやすいです
ありがとうございました
でももう遅いんで明日やります・・・(´・ω・`)

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

Re: DXライブラリが一瞬で消えます

#129

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

#if 0

#endif
で囲むことでも、囲まれたコードを無効化できます。

ほげ
#if 0
ふが (実行されない)
ぴよぴよ (実行されない)
#if 0
ネストもOK (実行されない)
#endif

/* コメントが中に入っていても大丈夫 */
ふー (実行されない)
#endif

ばー
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 9年前
住所: 大阪府
連絡を取る:

Re: DXライブラリが一瞬で消えます

#130

投稿記事 by Hiragi(GKUTH) » 5年前

とりあえずif文の中には条件式を書いてあげましょう。
だいがくせい!

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

Re: DXライブラリが一瞬で消えます

#131

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

Hiragi(GKUTH) さんが書きました:とりあえずif文の中には条件式を書いてあげましょう。
なんでCheckHitKeyのときはきちんと比較できているのに、変数になると1個残らず代入してしまっているのでしょうか?
コンパイルエラーにならないから?
何も考えず手当たり次第にコードを追加するのではなく、少しは自分の頭を使って追加するコードの意味を考えていますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

顔芸

Re: DXライブラリが一瞬で消えます

#132

投稿記事 by 顔芸 » 5年前

大いにあります→ですよねーに思わず吹き出してしまいました(笑)

多分コンパイルエラーが出ないから思考停止してしまってるんですね~・・
顔芸 さんが書きました: 条件式について何度か指摘はあったようですが,エルフさん自身,まだ気付けていない様子ですね.
以下の参考サイトの内容をよく読んでみることをおすすめします.

http://www.wakhok.ac.jp/~kanayama/C/99/node18.html
http://www.g-ishihara.com/c_co_01.htm
よくやる間違い
a = 10;
b = 34;
if (a = b){
printf("a == b \n");
}
この例は文法的には間違っていないが、良くやる間違いの一つである。 どこが間違っているかというと、
if の条件文が、比較演算の == では なく、代入演算の = になっている点にある。本来ならば、 a=10, b=34 なの で、a と b とは異なっており、
if 文の中は実行されない筈であるが、 実はこの例では実行されてしまう。比較演算の == を代入演算の = に間違えた だけなのだが、
実は、代入演算は演算なので演算結果が存在する。代入演算の 結果は代入した値になるという決まりなので、
a=b の結果は、b が 34 より 34 になる。これは、0ではないので、この代入演算の結果は真と判断される 訳である。
これを真面目に読んで理解してくれたら一発だと思うんですけどねー・・上に抜粋している5行だけでも.

much

Re: DXライブラリが一瞬で消えます

#133

投稿記事 by much » 5年前

みけCAT さんが書きました:
Hiragi(GKUTH) さんが書きました:とりあえずif文の中には条件式を書いてあげましょう。
なんでCheckHitKeyのときはきちんと比較できているのに、変数になると1個残らず代入してしまっているのでしょうか?
コンパイルエラーにならないから?
何も考えず手当たり次第にコードを追加するのではなく、少しは自分の頭を使って追加するコードの意味を考えていますか?
初心者あるあるだから
単純にミスなのか,アレアレの違いを理解できていないのかどちらかは知らんけど
とりあえずどこが間違っているかを自分で探しだして経験したほうがその部分に対する理解が深まるかも


確かに
int a = 10
if(a = 5){
  //通っちゃう
}

が ファ!?って感じでしょうね(現状だと)


確かに,入門書での仕様は一部しか書いてないから
入門書の形じゃなくても結構通っちゃうからね...
(慣れると敢えてそっちを使ったりするけど)

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#134

投稿記事 by エルフ » 5年前

ごめんなさい遅れました

そうですね やっとifの中には条件を入れろという意味が理解できました

ifの中の=を==に変えることにより、解決いたしました
ありがとうございました

ですが・・・
一瞬で全て消えてしまいます!!!!
証拠がちゃんと付けれているか見直してきます

アバター
エルフ
記事: 79
登録日時: 5年前
住所: 埼玉

Re: DXライブラリが一瞬で消えます

#135

投稿記事 by エルフ » 5年前

事故解決できました
みなさん今まで本当にありがとうございました。
私の理解力がたらず、何度も質問をしてしまい、すいませんでした。

またわからない事があったら質問をさせて頂くので、その時はよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る