スレを勃てるまでもないC/C++の質問はここで 17at TECH
スレを勃てるまでもないC/C++の質問はここで 17 - 暇つぶし2ch700:デフォルトの名無しさん
10/11/07 23:55:40
自分で書いてるじゃん

GetKeyState(VK_LBUTTON)

701:デフォルトの名無しさん
10/11/08 00:25:28
>>700
ああ!それで大丈夫でしたか!
ありがとうございます。助かりました。

702:デフォルトの名無しさん
10/11/08 00:26:10
>>700
おお!それで大丈夫でしたか!
ありがとうございます。助かりました。

703:デフォルトの名無しさん
10/11/08 00:27:33
これはどう解釈したら良いのだろうか、

704:デフォルトの名無しさん
10/11/08 00:58:27
これはどう解釈したら良いのだろうか、

705:デフォルトの名無しさん
10/11/08 00:58:44
僕にはわからない

706:デフォルトの名無しさん
10/11/08 01:04:20
僕にはわからない

707:デフォルトの名無しさん
10/11/08 08:28:04
多分キーボードにしか使えないと思ってたんじゃないだろうか

708:デフォルトの名無しさん
10/11/08 11:03:58
多分キーボードにしか使えないと思ってたんじゃないだろうか

709:デフォルトの名無しさん
10/11/08 12:55:57
タグみたいなのあるじゃないですか。
それでタグみたいなやつを作るには
class A{};
static const int A=1;
typedef int A;
上記のうちのどれが最適ですか?
ちなみにtypedefはint Aとint Bはべつものになりますか?

710:デフォルトの名無しさん
10/11/08 13:03:22
日本語でおk

711:デフォルトの名無しさん
10/11/08 13:28:26
iterator_tag でも参考にしろ。

712:デフォルトの名無しさん
10/11/08 16:25:51
for(i=1;i<10;i++)
{
if(no[i] < i_min)
{
i_min = no[i];
a = i;
}
no[a] = i_min+10;


これを10回繰り返したいのですが、どうすればいいんでしょうか?
具体的には配列の最小値を選び、その最小値に+10をして、もとの値に入れる

といった動作です
お願いいたします。

713:デフォルトの名無しさん
10/11/08 16:45:50
forで括れよ

714:デフォルトの名無しさん
10/11/08 16:50:35
>>712
int j;

for ( j=0 ; j<10 ; j++ ){
i_min = no[0] ;
a = 0 ;
for(i=1;i<10;i++)
{
if(no[i] < i_min)
{
i_min = no[i];
a = i;
}
}
no[a] = i_min+10;
}

715:デフォルトの名無しさん
10/11/10 19:11:42
ビットフラグの定義を

#define A_ENABLE 0x00000001
#define B_ENABLE 0x00000002
#define C_ENABLE 0x00000004
#define D_ENABLE 0x00000008

みたいに書いている同僚がいたので


#define A_ENABLE (1 << 0)
#define B_ENABLE (1 << 1)
#define C_ENABLE (1 << 2)
#define D_ENABLE (1 << 3)

のほうがいいと思ったので指摘したんだけど、こんなものは会社によって
書き方のルールは違うからどっちでもいいみたいなことを言われました。

マイコン用のライブラリとかでは後者の書き方をよくみかけるし、
ビットフラグだということがわかりやすいので、後者で統一しようと
考えているんだけど、おかしいですかね。。。?



716:デフォルトの名無しさん
10/11/10 19:14:15
>>715
どっちでもいいし、デバッガで見たときなどに計算しなくてすむぶん上の方がいいという考え方もありうる。

717:デフォルトの名無しさん
10/11/10 19:28:40
ありがとうございます。

ただ、デバッガでみるときはビットがたっているか、いないかで確認するので
表示は16進表記じゃなく、2進数表記に切り替えると思いますがどうでしょうか?

やっぱりもともとビット単位で表現するものをわざわざ16進表記にするのは
余計な脳内変換が必要なのでそうする理由がよくわからないのですが、ほかに
デバッガでの表示が容易という点以外に何か利点はありますでしょうか?


718:デフォルトの名無しさん
10/11/10 19:58:25
2、8、16進数の相互変換は見た瞬間出来るぐらいでちょうどいいよ

719:デフォルトの名無しさん
10/11/10 21:41:06
A_ENABLEの定義を見ただけでフラグに何ビット使うかわかるとか

720:デフォルトの名無しさん
10/11/10 22:54:07
>>15
1ビットだけ立つならそれでもいいが、複数立てる場合は前者が直感的にいい。
もちろん、頭の中で瞬時にビットのイメージがわくからね

721:デフォルトの名無しさん
10/11/10 23:22:22
>>720
どういうこと?マクロの使用箇所は関係ないと思うが。

722:デフォルトの名無しさん
10/11/10 23:42:21
>>715
そんなビミョーこと指摘しても認めるわけないだろ。

マニュアルに書いてあるようなことでも絶対認めないような
連中とかゴロゴロいるくらいだし。

「SQLでbetween禁止な。インデックスがきかないから」

「(各種証拠をみせて)インデックスききますよ」

「いままでずっとそうだから、とにかくbetwennは禁止だ」

みたいな。

723:デフォルトの名無しさん
10/11/10 23:53:48
>>722
まあ指摘が細かいことはわかっているんだけど、こういう糞コードで
どんどん汚染されていくのを黙ってみてられないんだよね・・・


724:デフォルトの名無しさん
10/11/11 00:23:30
>>723
bit立てるのにbit長キメウチは汎用性ないからな
でも、A_ENABLE ってのはちょっとセンスないな

#define BIT_0 (1 << 0)
#define BIT_1 (1 << 1)
#define BIT_2 (1 << 2)
#define BIT_3 (1 << 3)
....
とか位にしてくれ
BIT_0 || BIT_3 とかするときにどのbitが建っているか解りやすい

725:デフォルトの名無しさん
10/11/11 00:26:57
BIT_0 | BIT_3 だった

726:デフォルトの名無しさん
10/11/11 00:45:26
#define BIT(n) (1 << (n))

727:デフォルトの名無しさん
10/11/11 00:48:04
#define A_ENABLE 0x100000000
#define B_ENABLE (1 << 32)

intが32ビット以下のときAはlong long等になるがBはint 0
シフトするなら環境依存の有効ビット幅を意識せずにはいられない

728:デフォルトの名無しさん
10/11/11 01:03:21
>>722
だって日本ではドカタと呼ばれている底辺職種の人たちだよ
>>723 だから、細かいことはあまり気にするな

729:デフォルトの名無しさん
10/11/11 01:05:11
情報産業がなければ何もかも回らなくなるのに土方とか言われてなんでこんな立場低いのかね

730:デフォルトの名無しさん
10/11/11 01:22:59
>>729
プログラマに低脳多いから、立場が低いじゃないか
わが社の主業務は人貸しですってとこ多いし。売買の対象となる人の立場が高いなんてありえないよ。
自社製品を売って金を稼ぐ会社か元受に近い会社じゃないと、プログラマ==ドカタって扱いになるんじゃないか

731:デフォルトの名無しさん
10/11/11 07:44:06
本物の土方だっていなくなれば大変だからな
いなくなれば困るなんてのは立場には関係ないわな

732:デフォルトの名無しさん
10/11/11 12:54:09
プログラマーは30過ぎるとSEにジョブチェンジされるんだからいいじゃん。
土方は定年まで土方だよ。

733:デフォルトの名無しさん
10/11/11 14:30:22
数千行のプログラムである処理を行うとき、
関数の引数としてポインタを利用する場合とグローバル変数を
用いる場合ではどのような違いがありますでしょうか?

734:デフォルトの名無しさん
10/11/11 14:30:22
ひ、ひじかた…

735:デフォルトの名無しさん
10/11/11 14:34:27
グローバル変数は極力使わないようにするべき

736:デフォルトの名無しさん
10/11/11 15:14:44
グローバル変数を使うと悪意を持った同僚がバグを仕込む確率が高くなります

737:デフォルトの名無しさん
10/11/11 15:28:41
関数コールの時にスタックに積まない分、グローバルの方が早いって事?

738:デフォルトの名無しさん
10/11/11 15:40:55
>>733
仕様をいちいち客に問い合わせるか、
仕様書を見るかの違い。

739:z
10/11/11 16:54:20
C言語で分からない問題があります。
{if-else文} 身長と体重のデータを読み込み、下の定義から体型を判定するプログラムを作成せよ。

定 義:身長h(cm),体重w(Kg)とすると

w < (h-95)*0.82 やせすぎ(SLIM)

w > (h-95)*1.10 ふとりすぎ(FAT)

その中間 正常(NORMAL)



740:デフォルトの名無しさん
10/11/11 16:56:19
マルチしね

741:デフォルトの名無しさん
10/11/11 17:41:13
>>737
誤差らしい

742:デフォルトの名無しさん
10/11/12 11:29:00
>>737
最近のコンパイラはstaticな関数はどんどんインライン展開してしまうのでスタックに積むコストはなくなる場合が多くなります。
また、グローバル変数はCPUキャッシュの外にある場合があるので、アクセスコストが馬鹿にならない場合があります。

そんなことよりも、それが問題になるようなレベルの高速化をする前にやることは腐るほどあるので、保守性を上げる為に
どうしても必要がある場合以外はグローバル変数は禁止の方向で。まして、externで外部変数を参照するなんて以ての外。

743:デフォルトの名無しさん
10/11/12 12:15:27
>>733
マルチスレッド化に際し、大きな障害になる。

744:デフォルトの名無しさん
10/11/12 16:14:21
応用的なクラスを効率とか安全性考えて試行錯誤するんだけどstlとかboost使ってとりあえずでやっつけたほうが良いものが出来上がって悲しい

745:デフォルトの名無しさん
10/11/13 08:38:18
>>744
俺たちの代わりに試行錯誤してくれたんだと考えれば悲しくない。

746:デフォルトの名無しさん
10/11/13 19:14:16
DirectXでゲームを作ってます

外部ファイルで持たせてあるデータのロードに失敗した時に、
エラーメッセージを表示して強制終了したいのですが、
MessageBox()関数には引数として、hwndが必要です。

クラス設計を進めていくと、わざわざ全てのクラスのコンストラクタに
hwndを渡すのが煩わしいのですが、他の方法はないでしょうか?

hwndをグローバル変数で持たせる、という方法も思いついたのですが、
エラーメッセージのために、普通、そこまでするものでしょうか?

ちなみに、_ASSERT_EXPR()は、リリース時には動かないので、除外してください

747:デフォルトの名無しさん
10/11/13 19:50:19
例外を投げてUIを扱えるところまで戻ったところでcatchする

748:デフォルトの名無しさん
10/11/13 19:57:00
>>746
言わんとするところは分かるが根本的な設計が間違ってる

ウィンドウハンドルみたいなハード依存部分を
グローバルスコープで参照したり各クラスオブジェクトに渡すのは良くない
ハードに依存する部分としない部分はキッチリ分けないと再利用性が無くなる

あと、その言い方だとたぶん
各オブジェクトごとにファイルを読んでインスタンスを生成するような設計っぽいけど
それだと同じファイルを使うオブジェクトを複数生成するときに
オブジェクトの数だけ読み込みを行わなくならなくならないか?

やるべきことはデータロード部分と各クラスオブジェクトを分離すること
まずデータロードクラスなりを1つ作って
データ読み込みは全てコイツが行う
ウィンドウハンドルもこコイツだけが内部で知ってれば良くて
メッセージ表示等も全てコイツがやる

各クラスオブジェクトはこのデータロードクラスで
読み込んだデータを参照してインスタンスを生成し
それ自身はファイルの読み込みはしないようにする

749:デフォルトの名無しさん
10/11/13 19:59:00
なるほど!

750:デフォルトの名無しさん
10/11/13 20:11:08
>>748
便乗して質問してしまうが「データの参照」って具体的にどうやって書けばいいの?


751:デフォルトの名無しさん
10/11/13 20:17:36
>>746
コンストラクタとか関数の引数全てにhwnd渡すぐらいなら、
グローバル変数の方がいい

どうしても気なるなら、staticな変数にhwndを覚えるようなクラスを作って、
メッセージボックス表示をそのクラスで行なうとか

752:デフォルトの名無しさん
10/11/13 20:22:51
強制終了ならFatalExceptionとか作ってスローしてmainでキャッチすればいいじゃん

753:デフォルトの名無しさん
10/11/13 21:41:33
>>746
けっこうみんな悩んでるからここで聞いて解決する問題じゃないと思う


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch