ページ 1 / 1
無題
Posted: 2009年12月15日(火) 12:28
by ヤクザマンション
if(!count==0)とif(count!=0)は同じ意味ですか?
Re:無題
Posted: 2009年12月15日(火) 13:13
by lbfuvab
同じだと思いますよ。
Re:無題
Posted: 2009年12月15日(火) 13:39
by 光翼型近接支援残酷超初心者
自分初心者なので自信ないですが。
たぶん違う物だと思います。
if(!count==0)は「count=0」ですが。
if(count!=0)は「count=0ではない」と言う意味だと思われますので、まったく違う物、むしろ逆。
という事です。
いや、にわか知識なのでとても怪しいです。間違ってたら本当にすみません。
Re:無題
Posted: 2009年12月15日(火) 13:44
by 初級者
同じ意味ではありません。
演算子の優先順位により、前者は
if ((!count) == 0)
と解釈されます。
もし、「countが0でないとき」を表現したければ
if (count != 0)
か
if (!(count == 0))
と書いてください。
Re:無題
Posted: 2009年12月15日(火) 15:32
by YuO
真偽値表を書けば一発でわかりますが,同じ意味になります。
count !count !count==0 count!=0
0 1 0 1
1 0 1 0
2 0 1 0
文法から見た場合,
ISO/IEC 9899:1999 6.5.3.3 Unary arithmetic operatorsにより,!(E) と ((E) == 0) は等しく,
同じく==と!=の意味合いから,((E1) != (E2)) と !((E1) == (E2)) は等しいので,
!count == 0 → (count == 0) == 0 → !(count == 0) → count != 0
と書き換えができます。
Re:無題
Posted: 2009年12月15日(火) 16:01
by non
YuOさんへ
count!=0 のとき
0
1
1
じゃないと、同じ意味になりませんよ。
Re:無題
Posted: 2009年12月15日(火) 17:47
by YuO
> じゃないと、同じ意味になりませんよ。
本当ですね。書き間違えています。
count !count !count==0 count!=0
0 1 0 0
1 0 1 1
2 0 1 1
が正しい表です。
nonさん,ありがとうございます。
Re:無題
Posted: 2009年12月15日(火) 18:07
by たかぎ
countがスカラー型であればYuOさんの回答の通りです。
しかし、countがスカラー型でない場合、具体的にはクラス型の場合には事情が異なります。
言語不明なので質問の真意はわかりませんが、C++であれば、countがクラス型であり、!演算子、==演算子、!=演算子が多重定義されている場合、あるいは変換関数が定義されている場合には、意味も結果もまったく異なることがあり得ます。
Re:無題
Posted: 2009年12月15日(火) 20:51
by ヤクザマンション
みなさんありがとうございました