ページ 11

if文について

Posted: 2009年11月11日(水) 19:41
by nanashi
以下のようなプログラムで、前者のif文でif内が実行されると
思っていたのですが、実際は後者のようにしないとif文内が実行されません。
どうしてなのか、ご教授願えないでしょうか?

#include <stdio.h>
int main(){
char a = 0xf0;

if((unsigned char)a & 0xff == 0xf0) //こちらでは条件にあてはまらない
//if(((unsigned char)a & 0xff) == 0xf0) //こちらでは条件にあてはまる
{

}

return 0;
}

Re:if文について

Posted: 2009年11月11日(水) 20:18
by box
== 演算子の方が & 演算子よりも優先順位が高いからです。

Re:if文について

Posted: 2009年11月11日(水) 20:36
by nanashi
なるほで。==は優先順位が一番下だと思ってました。
ありがとうございました。

Re:if文について

Posted: 2009年11月11日(水) 21:34
by box
演算子の優先順位については、おおかたの入門書に書いてあるはずです。
ただ、すべての順位を覚える必要はありません。
自分が行ないたいようにカッコを書けばよいです。変にうろ覚えするより、よほど確実です。