引数を|で区切っている意味は? – プログラミング – Home

引数を|で区切っている意味は?
 
通知
すべてクリア

[解決済] 引数を|で区切っている意味は?


ぷらら
 ぷらら
(@ぷらら)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

関数に引数を渡すときに「|」で区切っている意味がわかりません。
入門書関係を調べてみたのですが、ビット演算子の事しか載っていませんでした。
教えてください。よろしくお願いします。

例)CreateWindow(CHD_CLASS,
NULL,
WS_CHILDWINDOW | WS_VISIBLE, ←これです。
20,
20,
60,
30,
:
:
:


引用未解決
トピックタグ
SR20DE
 SR20DE
(@SR20DE)
ゲスト
結合: 22年前
投稿: 4
 

ビット演算子であっています。複数のフラグを指定したりするときによく使います。
l(or)や&(and)はよく使うので、きちんと動作を理解しておいた方がいいと思います。


返信引用
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

おっしゃっている通り、論理和の「ビット演算子」です。


返信引用
ぷらら
 ぷらら
(@ぷらら)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

すみません。動作を理解できていないみたいです。
ビット演算子という事は、WS_CHILDWINDOWとWS_VISIBLEの
ビット毎の論理和をとって、それを引数として渡しているという事で
良いのでしょうか?
入門書には、WS_CHILDWINDOWであり、なおかつWS_VISIBLEであるウインドウ
が生成されるような事が書かれていましたが、論理和をとると、
WS_CHILDWINDOWとWS_VISIBLEの特徴を持った事を示す値になるということ
でしょうか?

また、OR演算子でなく、WS_CHILDWINDOW & WS_VISIBLEとした場合は、
どのような動作になるのでしょうか?

よろしくお願いします。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 10
 

基本的には、ぷららさんのおっしゃる通りで合っています。
あとは、皆さんがおっしゃっているように、ビット演算の勉強をすればいいだけです。

Windows98/VC++6.0sp5pro/SDK-may2002/ATL3.0/WTL7.0
私の環境での、WinUser.h より抜粋。
#define WS_VISIBLE 0x10000000L
#define WS_CHILD 0x40000000L
#define WS_CHILDWINDOW (WS_CHILD)

| はビットごとの論理和、& はビットごとの論理積なので、以下の式が成立します。
(WS_CHILDWINDOW | WS_VISIBLE) == 0x50000000L
(WS_CHILDWINDOW & WS_VISIBLE) == 0x00000000L
(0x50000000L & WS_VISIBLE) == 0x10000000L == WS_VISIBLE
(0x50000000L & WS_CHILDWINDOW) == 0x40000000L == WS_CHILDWINDOW
(0x50000000L & 0x01) == 0L


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 参考にならないかもしれないが、、、
http://www24.cds.ne.jp/~neg/pro/neg/neg008.html


返信引用
ぷらら
 ぷらら
(@ぷらら)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

わかりました。ビット演算の勉強をしようと思います。
レスをくれた方々、本当にありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました