アカウント名:
パスワード:
ハードウェアもソフトウェアもダメですね。屋内の壁についている一般的なシーソー型のスイッチで、どちらかを押すとONになって、反対側が出っ張るというもの。操作後は、ステート(ON)の状態を維持するので役目としてはチェックボックスとも言えます。で、今の状態がどのステートかが分からない。こないだは「〇」「-」がスイッチの両端に印刷してあるのですが、結局何をおしたらエンジン始動可能状態なのか、今すでにONなのかが分かりませんでした。部屋の電灯スイッチだとスイッチ自体が発光するものがありますが「もしかして発光状態=電灯ONか?」とも考えられます。エレベーターのスイッチのように。スマホの UI ではとうとうon状態では色を変えて "ON" と文字で表示したりするようになりましたね。ここまできた・・。スティック式のトグルスイッチだとアナログで同様の工夫がされたものがありますね。シャッターの下のONという文字が見えるようになるやつ。これが最終系か。
類似の難しいUI問題として蛇口があります。どちらにひねったらお湯か?赤い印があるほうにひねるのか?です。
たしかに、「On」「Off」と明記すれば紛らわしくないのに、「〇」「-」なんですよね。不思議です。
それはゼロとイチです。ISOで決まってるんです。
0がfalseで1がtrueって、まるでC言語ですね。
情報量1ビットだから…
ふつう非零がtrueじゃないの?
解釈時はそのとおりですが、生成時はtrueは1です。つまり、 !0 == 1 固定です。!0 == 2 となるような処理系は無いはずです。したがって、 !!2 == !(!2) == !0 == 1 !!1 == !!2 == !!3 == 1 !!0 == 0
仲間はずれを探せ!
#define FALSE (0)#define TRUE (!0)int x;
① if ( x )② if ( x != FALSE )③ if ( x == TRUE )④ if ( !(x == FALSE) )
#気づきにくいバグの種になる奴
C言語で論理式の評価には、defineした TRUE / FALSE と比較しろというコーディングルールがあったりします。このやり方では、外部の関数が出したの論理値の評価に TRUE,FALSE を用いると、出題どおりのバグが起きて危険なので、if ((命題) != FALSE) / if ((命題) == FALSE) としなければなりません。かえってわかりにくいです。
ここは論理式の評価は if (命題) / if !(命題) の形式で統一したほうが、結局のところ、シンプルでわかりやすいと思います。初めからboolean型が組み込まれている言語に慣れ親しんだ人には抵抗があるかもしれませんが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
トルグスイッチの類 (スコア:2)
ハードウェアもソフトウェアもダメですね。
屋内の壁についている一般的なシーソー型のスイッチで、どちらかを押すとONになって、反対側が出っ張るというもの。
操作後は、ステート(ON)の状態を維持するので役目としてはチェックボックスとも言えます。で、今の状態がどのステートかが分からない。
こないだは「〇」「-」がスイッチの両端に印刷してあるのですが、結局何をおしたらエンジン始動可能状態なのか、今すでにONなのかが分かりませんでした。
部屋の電灯スイッチだとスイッチ自体が発光するものがありますが「もしかして発光状態=電灯ONか?」とも考えられます。エレベーターのスイッチのように。
スマホの UI ではとうとうon状態では色を変えて "ON" と文字で表示したりするようになりましたね。ここまできた・・。スティック式のトグルスイッチだとアナログで同様の工夫がされたものがありますね。シャッターの下のONという文字が見えるようになるやつ。これが最終系か。
類似の難しいUI問題として蛇口があります。どちらにひねったらお湯か?赤い印があるほうにひねるのか?です。
Re: (スコア:1)
たしかに、「On」「Off」と明記すれば紛らわしくないのに、「〇」「-」なんですよね。不思議です。
Re: (スコア:0)
それはゼロとイチです。ISOで決まってるんです。
Re:トルグスイッチの類 (スコア:1)
0がfalseで1がtrueって、まるでC言語ですね。
Re: (スコア:0)
情報量1ビットだから…
Re: (スコア:0)
ふつう非零がtrueじゃないの?
Re:トルグスイッチの類 (スコア:1)
ふつう非零がtrueじゃないの?
解釈時はそのとおりですが、
生成時はtrueは1です。
つまり、 !0 == 1 固定です。
!0 == 2 となるような処理系は無いはずです。したがって、
!!2 == !(!2) == !0 == 1
!!1 == !!2 == !!3 == 1
!!0 == 0
Re: (スコア:0)
Re: (スコア:0)
仲間はずれを探せ!
#define FALSE (0)
#define TRUE (!0)
int x;
① if ( x )
② if ( x != FALSE )
③ if ( x == TRUE )
④ if ( !(x == FALSE) )
#気づきにくいバグの種になる奴
Re:トルグスイッチの類 (スコア:1)
C言語で論理式の評価には、defineした TRUE / FALSE と比較しろというコーディングルールがあったりします。
このやり方では、外部の関数が出したの論理値の評価に TRUE,FALSE を用いると、出題どおりのバグが起きて危険なので、
if ((命題) != FALSE) / if ((命題) == FALSE) としなければなりません。
かえってわかりにくいです。
ここは論理式の評価は if (命題) / if !(命題) の形式で統一したほうが、結局のところ、シンプルでわかりやすいと思います。
初めからboolean型が組み込まれている言語に慣れ親しんだ人には抵抗があるかもしれませんが。
Re: (スコア:0)
Re:トルグスイッチの類 (スコア:1)