無題

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

無題

#1

投稿記事 by ヤクザマンション » 15年前

if(!count==0)とif(count!=0)は同じ意味ですか?

lbfuvab

Re:無題

#2

投稿記事 by lbfuvab » 15年前

同じだと思いますよ。

光翼型近接支援残酷超初心者

Re:無題

#3

投稿記事 by 光翼型近接支援残酷超初心者 » 15年前

自分初心者なので自信ないですが。

たぶん違う物だと思います。


if(!count==0)は「count=0」ですが。

if(count!=0)は「count=0ではない」と言う意味だと思われますので、まったく違う物、むしろ逆。

という事です。

いや、にわか知識なのでとても怪しいです。間違ってたら本当にすみません。

初級者

Re:無題

#4

投稿記事 by 初級者 » 15年前

同じ意味ではありません。
演算子の優先順位により、前者は
if ((!count) == 0)
と解釈されます。

もし、「countが0でないとき」を表現したければ
if (count != 0)

if (!(count == 0))
と書いてください。

YuO

Re:無題

#5

投稿記事 by YuO » 15年前

真偽値表を書けば一発でわかりますが,同じ意味になります。
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
と書き換えができます。

non

Re:無題

#6

投稿記事 by non » 15年前

YuOさんへ
count!=0 のとき
0
1
1
じゃないと、同じ意味になりませんよ。

YuO

Re:無題

#7

投稿記事 by YuO » 15年前

> じゃないと、同じ意味になりませんよ。
本当ですね。書き間違えています。
count !count !count==0 count!=0
  0      1        0        0
  1      0        1        1
  2      0        1        1
が正しい表です。

nonさん,ありがとうございます。

たかぎ

Re:無題

#8

投稿記事 by たかぎ » 15年前

countがスカラー型であればYuOさんの回答の通りです。
しかし、countがスカラー型でない場合、具体的にはクラス型の場合には事情が異なります。

言語不明なので質問の真意はわかりませんが、C++であれば、countがクラス型であり、!演算子、==演算子、!=演算子が多重定義されている場合、あるいは変換関数が定義されている場合には、意味も結果もまったく異なることがあり得ます。

ヤクザマンション

Re:無題

#9

投稿記事 by ヤクザマンション » 15年前

みなさんありがとうございました

閉鎖

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