- PR -

1行に代入文2個 これは何?

投稿者投稿内容
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2007-02-28 16:09
引用:

nagiseさんの書き込み (2007-02-28 13:32) より:
数学の式においては (略) 自己言及に陥る場合、式は成り立たなくなります。


それは違う…

x = x + x (x = 0の場合正しい)
x = x * x (x = 1の場合正しい)
x = x ^ 1 (常に正しい)(^は累乗の演算子とする)

正しくは、

『数学の式においては (略) 自己言及に陥る場合、式は成り立つ場合と、成り立たない場合と、証明不可能に陥る場合があります。』

だと思う。

# 揚げ足取りスマソ
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-02-28 16:40
引用:

sawatさんの書き込み (2007-02-28 16:09) より:
正しくは、

『数学の式においては (略) 自己言及に陥る場合、式は成り立つ場合と、成り立たない場合と、証明不可能に陥る場合があります。』

だと思う。



いえ、まったくそのとおりです。
現状の議論からすれば本質的ではないと思って端折ってしまいました。
代数などの数式においては自己言及で無限の再帰に陥りそうに見える記述が、
プログラムにおいては自己言及ではなく再帰性を持たないことが言いたかったので。

いずれにせよ、代数での記号の扱いとプログラム言語での記号の扱いに
違いがあることの証左であると思います。
未記入
常連さん
会議室デビュー日: 2007/02/24
投稿数: 29
投稿日時: 2007-02-28 20:12
引用:

sawatさんの書き込み (2007-02-28 16:09) より:

x = x * x (x = 1の場合正しい)




x = x * x (x = 0,1の場合正しい)

じゃないの?

# 揚げ足取りスマソ
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-02-28 22:36
なんで代入文の話から数学の話になるのでしょうか。
全く意味わからないです。

=は代入、==は等価性の評価と定義されているのに、
何故多様な概念を扱おうとするのかが意味不明です。
そんな議論をしているスレッドじゃないのに。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-02-28 22:51
それが「object試行」クオリティ
会社員
ベテラン
会議室デビュー日: 2003/01/21
投稿数: 50
投稿日時: 2007-03-01 01:27
実行結果は同じですが出力される中間コード(javap -c)が違うためクラスファイルのサイズに差がでます。

pattern1 = pattern2 = getPattern();

と記述すると4バイトサイズが小さくなります。
C言語も同一で実行形式のサイズを小さくさせるための古い技術の一種ですね。
細かなメモリ制限がない現在では、あまり意味のない技ですね。
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 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 ]
D.Matsu
ベテラン
会議室デビュー日: 2006/12/07
投稿数: 51
投稿日時: 2007-03-01 10:14
引用:

x = x * x (x = 0,1の場合正しい)

じゃないの?



z = x * yのときy = z / x及びx = z / yが成立しなければならないので、x = 0だと逆算が成立しないのではなかろうかと。
#完全に主旨外れの話題ですなぁこれ。

スキルアップ/キャリアアップ(JOB@IT)