配列の中身の数値の比較

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kaiten

配列の中身の数値の比較

#1

投稿記事 by kaiten » 17年前

配列の中身の数値が一致しているかどうかを調べたいのですが、グーグル先生はどうも文字列の場合ばかり出してくれちゃうのでここで質問させていただきます。
a[0]==a[1]のようにすると配列のアドレスを比べてしまったと思うのですが、肝心の中身の比較のし方を忘れてしまいまして。memcmpはやっぱり文字列ですし。

array

Re:配列の中身の数値の比較

#2

投稿記事 by array » 17年前

int a[2];
なら中身の比較だと思うんですけど
if(a[0]==a[1]){処理}

char a[/url];の話ですか?

Mist

Re:配列の中身の数値の比較

#3

投稿記事 by Mist » 17年前

> memcmpはやっぱり文字列ですし。
memcmpはメモリに書かれている値の一バイトずつの比較なので、それが文字列であるかどうかなんて関係ないです。
long a[2];

a[0] = 100;
a[1] = 100;

if (!memcmp(&a[0], &a[1], sizeof(long)) {
    printf("一致\n");
}
こんなめんどくさいことする人はいないと思いますが(^-^;

kaiten

Re:配列の中身の数値の比較

#4

投稿記事 by kaiten » 17年前

……な、(ry
ということはお恥ずかしいながらどうやら別のところでミスしているようです。
ともかく、ありがとうございました。

バグ

Re:配列の中身の数値の比較

#5

投稿記事 by バグ » 17年前

試しに書かれたソースを載せてみては如何ですか?アドバイスがうけられるかもしれませんよ(^-^)

kaiten

Re:配列の中身の数値の比較

#6

投稿記事 by kaiten » 17年前

ではお言葉に甘えて
Pc[a].slot[1]=Pc[a].img[1][0]=LoadGraph("Sh\\img\\player\\suika.png");
Pc[a].slot[2]=Pc[a].img[2][0]=LoadGraph("Sh\\img\\player\\suika.png");
if(Pc[a].slot[1]==Pc[a].slot[2])Pc[a].slot[2]=NULL;
と言うようになってまして、読みこんである画像を比較しようとしたのですがうまくいかなくて。
とりあえず
Pc[a].slot[1]=Pc[a].img[1][0]=LoadGraph("Sh\\img\\player\\suika.png");
Pc[a].slot[2]=Pc[a].img[1][0]=LoadGraph("Sh\\img\\player\\suika.png");
if(Pc[a].slot[1]==Pc[a].slot[2])Pc[a].slot[2]=NULL;
と言うようにして対処したのですが、どうも釈然としなかったもので。

box

Re:配列の中身の数値の比較

#7

投稿記事 by box » 17年前

> 読みこんである画像を比較しようとしたのですがうまくいかなくて。

エラーメッセージなどの情報を添えて、
どんな風にうまくいかなかったかを明記してくださると、
どなたかが解決方法を提示してくださるかもしれません。

単に「うまくいかない」とだけいわれても、こちらには何も伝わってきません。

kaiten

Re:配列の中身の数値の比較

#8

投稿記事 by kaiten » 17年前

これは失礼しました。
エラーは出ていないのですが、
Pc[a].slot[1]=Pc[a].img[1][0]=LoadGraph("Sh\\img\\player\\suika.png");
Pc[a].slot[2]=Pc[a].img[2][0]=LoadGraph("Sh\\img\\player\\suika.png");
if(Pc[a].slot[1]==Pc[a].slot[2])Pc[a].slot[2]=NULL;
とするとPc[a].slot[1]==Pc[a].slot[2]が成り立たないようなんです。
Pc[a].slot[2]に代入するのをPc[a].img[2][0]からPc[a].img[1][0]に変更したら同一と認識してくれたので
Pc[a].img[1][0]==Pc[a].img[2][0]が成り立ってないということだと思うのですが、同じ画像なのに同じと認識してくれないので困っています。

box

Re:配列の中身の数値の比較

#9

投稿記事 by box » 17年前

配列 Pc をメンバーに含む構造体の定義を
提示していただけますか?

Mist

Re:配列の中身の数値の比較

#10

投稿記事 by Mist » 17年前

※二重投稿になってしまったのでこちらは削除します

Mist

Re:配列の中身の数値の比較

#11

投稿記事 by Mist » 17年前

> Pc[a].slot[1]==Pc[a].slot[2]が成り立たないようなんです。
> 同じ画像なのに同じと認識してくれないので困っています。
それはあたりまえ。
LoadGraphの戻り値はメモリ上に記憶した位置を表すハンドルです。
中身がどうであれ、1回目のロードと2回目のロードではそれぞれ違うエリアに保存されるのですから、ハンドル同士を比較しても意味がないです。

例えば
int a,b;

a = b = 1000;

if (a == b) // 中身の比較であれば一致する
if (&a != &b) // 記憶されている場所は違うのでアドレスの比較は一致しない

kaiten

Re:配列の中身の数値の比較

#12

投稿記事 by kaiten » 17年前

皆さんありがとうございました。
LoadGraphの返り値がアドレスであるのを失念してました。
二の舞を演じないようDXライブラリのリファレンス一から読み直してきます(汗
今度こそ解決

閉鎖

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