&の意味

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

&の意味

#1

投稿記事 by Stanry » 15年前

C++言語を始めて基礎が終わったくらいの初心者です。
現在Win32のキーボードフックのプログラムを作っておりまして、SetWindowsHookEx関数を使いキーフックまでは出来たのですが、キー入力時にlParamに送られてくるデータから押上や押下の取得の方法がわからず、探してようやく見つけたのが↓のif文でした。しかし、if文中の&の意味を調べてもポインタなどの資料ばかり出てきて見つからなかったので質問させていただきます。
if((lParam&0xc0000000)!=0){
//WM_KEYDOWNと同じ
}
上のような&の時の意味はなんでしょうか。



//キー入力時にデータが送られてくるCALLBACK関数
LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp)
{
if (nCode < 0 ){
return CallNextHookEx(hMyHook, nCode, wp, lp);
}
if (wp >= VK_XBUTTON2){
if((lp&0xc0000000)==0){
//WM_KEYDOWNと同じ
}
return CallNextHookEx(hMyHook, nCode, wp, lp);
} else{
return CallNextHookEx(hMyHook, nCode, wp, lp);
}
return TRUE;
} 画像

Stanry

Re:無題

#2

投稿記事 by Stanry » 15年前

申し訳ありません。タイトルが消えてしまっていたようです。

※修正しました 画像

sizuma

Re:無題

#3

投稿記事 by sizuma » 15年前

論理積ですね。
これで検索すれば詳しく説明してるサイトが出てきますよ。



一応ぺたっと。
Wikipediaより引用です

C言語やPerlなどでは、ビット単位の論理積は「&」 で表され、

z = x & y;
$z = $x & $y;

のように使用される。

単なる論理積は「&&」で表され

if (x==0 && y==0)

のように使用される。 画像

Stanry

Re:無題

#4

投稿記事 by Stanry » 15年前

sizumaさん、ありがとうございます。
&&はよく使っていたのですが&も同じようなものだったのですね。。。勉強になりました。
変な質問をしてしまいスミマセンでした。。

Stanry

Re:無題

#5

投稿記事 by Stanry » 15年前

調べたところ普通にlParam * 0xc0000000 = 0x0 になったらWM_KEYDOWNってことで実装してあるんですね。
勉強になりました。

閉鎖

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