- - PR -
1行に代入文2個 これは何?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-28 16:09
それは違う… x = x + x (x = 0の場合正しい) x = x * x (x = 1の場合正しい) x = x ^ 1 (常に正しい)(^は累乗の演算子とする) 正しくは、 『数学の式においては (略) 自己言及に陥る場合、式は成り立つ場合と、成り立たない場合と、証明不可能に陥る場合があります。』 だと思う。 # 揚げ足取りスマソ | ||||
|
投稿日時: 2007-02-28 16:40
いえ、まったくそのとおりです。 現状の議論からすれば本質的ではないと思って端折ってしまいました。 代数などの数式においては自己言及で無限の再帰に陥りそうに見える記述が、 プログラムにおいては自己言及ではなく再帰性を持たないことが言いたかったので。 いずれにせよ、代数での記号の扱いとプログラム言語での記号の扱いに 違いがあることの証左であると思います。 | ||||
|
投稿日時: 2007-02-28 20:12
x = x * x (x = 0,1の場合正しい) じゃないの? # 揚げ足取りスマソ | ||||
|
投稿日時: 2007-02-28 22:36
なんで代入文の話から数学の話になるのでしょうか。
全く意味わからないです。 =は代入、==は等価性の評価と定義されているのに、 何故多様な概念を扱おうとするのかが意味不明です。 そんな議論をしているスレッドじゃないのに。 | ||||
|
投稿日時: 2007-02-28 22:51
それが「object試行」クオリティ
| ||||
|
投稿日時: 2007-03-01 01:27
実行結果は同じですが出力される中間コード(javap -c)が違うためクラスファイルのサイズに差がでます。
pattern1 = pattern2 = getPattern(); と記述すると4バイトサイズが小さくなります。 C言語も同一で実行形式のサイズを小さくさせるための古い技術の一種ですね。 細かなメモリ制限がない現在では、あまり意味のない技ですね。 | ||||
|
投稿日時: 2007-03-01 02:53
代入が「単に値をコピーするだけ」なら良いのですが、そうでない場合もあるので危険な時もあります。
例1(Cで) double d; float f; d = f = 0.1; // d=0.1; f=0.1; とは結果が異なる! // 幸いなことに、Javaはこの記述をエラーにしてくれます。 例2(Javaで) Integer i1, i2; int j1, j2; i1 = j1 = 1000; i2 = j2 = 1000; // i1 == j1 && i2 == j2 && j1 == j2 だが、i1 != i2 である。 // しかも、値が充分に小さいときは、i1 == i2 になる。 // 同一の型でない多重代入は、エラーにして欲しいところだが・・・ 例3(C++で) 代入演算子とキャスト演算子を定義し直せば、ありとあらゆる性質の悪いことが・・・ [ メッセージ編集済み 編集者: coasm 編集日時 2007-03-01 02:53 ] | ||||
|
投稿日時: 2007-03-01 10:14
z = x * yのときy = z / x及びx = z / yが成立しなければならないので、x = 0だと逆算が成立しないのではなかろうかと。 #完全に主旨外れの話題ですなぁこれ。 |