トップページ⇒tech
112コメント33KB

予想外の動きをするコードを書き込むスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/05/05(木) 00:40:36
一見して予想した動きとは違う動きをするコードを書き込んで
へ〜とかあーだこーだいってわいわいやりませんか?

言語と、予想した動き、実際の動き、あとよそから持ってきた場合は出典とか
書いてくれるとわかりやすいと思います
0002デフォルトの名無しさん2005/05/05(木) 00:41:32
↓トロイ
0003デフォルトの名無しさん2005/05/05(木) 00:50:53
ttp://www.rakuten.co.jp/efc/589344/573300/
0004デフォルトの名無しさん2005/05/05(木) 01:01:31
int i =0;
i = i++;
System.out.println(i);

言語:Java
予想:1
結果:0
出典:ジャヷハウス

当たり前の結果だが、同一変数への代入式でポストインクリメント使うとインクリメントされる予定の処理はもみ消される
正確には裏で元々iだったものをインクリメントしてiに代入してないだけなのかも知れないが機械語追ってないので分からない
0005デフォルトの名無しさん2005/05/05(木) 01:01:44
n = n++;
000652005/05/05(木) 01:03:11
(´・ω・`)ショボーン
0007デフォルトの名無しさん2005/05/05(木) 01:03:53
>>5
志村!!上!!上!!
0008デフォルトの名無しさん2005/05/05(木) 01:16:35
『結婚しよう』

言語:自然言語
予想:『その言葉をずっと待ってたの』
結果:『(゚Д゚)ハァ?』

このコードはオペランドにより出力結果が異なるので注意
0009デフォルトの名無しさん2005/05/05(木) 01:17:45
実行環境に大きく左右されそう
0010デフォルトの名無しさん2005/05/05(木) 01:59:14
C++の
オーバーロードとコピーコンストラクタ
には、たまに痛い目にあう。

なので、
コピーコンストラクタをコンパイラに自動生成させないように自前で書く。
コピーコンストラクタが必要ない場合でもassert(false)だけは書いておく。
これで、ミスを早期に発見できる。

実行時ではなく、コンパイル時にコピーコンストラクタを使用禁止にする方法ってある?
0011デフォルトの名無しさん2005/05/05(木) 02:17:50
JavaOne2003の1コーナーが出典だそうだ。

以下のソースをコンパイルして実行する(java Puzzling)と
どうなるか? (答えはメール欄)

public class Puzzling {
 public static void main(String[] args) {
  String a = new String("blah");
  System.out.println(a);
 }
}

public class String {
 private java.lang.String a;

 public String(java.lang.String a) {
  this.a = a;
 }

 public java.lang.String toString() {
  return a;
 }
}
0012うーん2005/05/05(木) 02:22:17
public class Puzzling {
 public static void main(java.lang.String[] args) {
  String a = new String("blah");
  System.out.println(a);
 }
}

public class String {
 private java.lang.String a;

 public String(java.lang.String a) {
  this.a = a;
 }

 public java.lang.String toString() {
  return a;
 }
}
0013デフォルトの名無しさん2005/05/05(木) 02:46:27
>>4
マジネタなんだね、
正直唖然
0014デフォルトの名無しさん2005/05/05(木) 02:51:40
>>11
メール欄を見ずに解答
答えはコンパイルエラーとなる?

Puzzling#mainの1行目のaの参照型及び生成しようとするオブジェクトの
Stringがjava.lang.Stringなのか、自前のStringなのか分からないから

違うかな
0015142005/05/05(木) 02:57:26
違ったか...

同一パッケージ(この場合はデフォルトパッケージ)内にあるクラスが優先されて
指定なしの場合は全て自前のStringと解釈されるが、そうするとPuzzling#mainの
シグネチャが(java.langString[] args)じゃなくて(自前のString args)となるから実行できなくなるってか...気付かんかったw
0016デフォルトの名無しさん2005/05/05(木) 05:51:30
Javaの話はやめてもらえないかな。
0017さて、間違いは何箇所あるでしょうw2005/05/05(木) 05:59:43
62 名前: デフォルトの名無しさん 投稿日: 2005/05/04(水) 17:33:35
>>57
呼び出し規約
http://www.google.co.jp/search?hl=ja&c2coff=1&q=%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E8%A6%8F%E7%B4%84&lr=lang_ja

呼び出し規約がcdeclなら関数の引数の数は気にしなくていい

f(a,b,c) {
  printf("a=%d b=%d c=%d", a,b,c);
}

main()
{
  f(1,2,3,4,5,6,7,8,9,10); //○ ただし1,2,3以外は使われない

  f(1,2); //× cの値は不定
}


mainもcdeclなので同じ理屈で引数を省略できる
0018デフォルトの名無しさん2005/05/05(木) 06:22:29
>>16
スレ荒らすな。お前がこのスレにくんのやめてもらえないかな。

Java叩き厨カコワルイ
0019デフォルトの名無しさん2005/05/05(木) 06:41:12
public class A {
 public static void main(String[] args) throws IOException {
  while(1) {
   System.out.println("じゃんけんしよう (グー=G, チョキ=C, パー=P)");
   new BufferedReader(new InputStreamReader(System.in)).readLine();
   System.out.println("貴方の勝ち!");
  }
 }
}
0020デフォルトの名無しさん2005/05/05(木) 06:48:50
>>19 while(1)で
   __             __/  / |    __  ──
     / ─ /  / \ ○   |   /  |      |    ̄ ̄/ ──
  __/  _/  /   \    |  /  レ  ─┴─  _/

      /\___/ヽ    
     /''''''   '''''':::::::\    
    . |(〇),   、(〇)、.:| 
    |   ,,ノ(、_, )ヽ、,, .::::|    
  .   |   `,rェェェ、 ' .:::::::| 
     \  |,r-r-|  .::::/     
  ,,.....イ.ヽヽ、`ニニ´ーノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||

コンパイル通るようにしても必ず勝ちになるのである意味予想外(コード見れば分かるか
0021デフォルトの名無しさん2005/05/05(木) 12:16:34
a[3] = 5;
print("%d\n", 3[a]);

5が出力される
0022デフォルトの名無しさん2005/05/05(木) 12:17:53
はいはい、すごいすごい。
0023デフォルトの名無しさん2005/05/05(木) 12:22:54
>>17
 間違箇所数でいうと6, 7箇所
 間違い行数でいうと3, 4行
くらいかな?
0024デフォルトの名無しさん2005/05/05(木) 12:25:21
ttp://p1088-ipbf208sizuokaden.shizuoka.ocn.ne.jp/
wwwwwwっwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww
っうぇwうぇおkwwwwwwうぇwww
wwwwwwwうはっwwwっうぇwwwwうはっ
おk
0025デフォルトの名無しさん2005/05/05(木) 12:36:57
>>21
すんげえーーーーー
何これどういう仕組みなんだ
0026デフォルトの名無しさん2005/05/05(木) 13:39:26
ポインタのポインタ
0027デフォルトの名無しさん2005/05/05(木) 14:12:53
&a[3] == a + 3
&3[a] == 3 + a
以上。
0028デフォルトの名無しさん2005/05/05(木) 15:15:13
Ruby, 仕様通りなんだけど、自分にとっては予想外。

num = 0
if num then
  puts "Foo"
end
0029デフォルトの名無しさん2005/05/05(木) 16:49:37
Perl, 仕様通りなんだけど、自分にとっては予想外。

$num = 0;
(以下略)
0030デフォルトの名無しさん2005/05/05(木) 17:43:38
>>13
鼻から悪魔が出てもかまわないC言語に比べたら
挙動がJLSで規定されてるだけマシだな
0031デフォルトの名無しさん2005/05/05(木) 18:11:24
>>10
boost::noncopyable

Boostが嫌ならコピーコンストラクタとoperator =()をprivate内で宣言だけして定義をどこにも書かなければいい。
(noncopyableがやっているのもたったそれだけ)
0032デフォルトの名無しさん2005/05/05(木) 18:42:00
char c0026 = '\u0026';
char c0027 = '\u0027';
char c0028 = '\u0028';

2行目でコンパイルエラー
c0027 = '\''; か
c0027 = 0x0027;
ならOK
0033デフォルトの名無しさん2005/05/05(木) 20:25:51
>>32
char c27 = '\x27';
wchar_t wc0027 = L'\u0027';
0034デフォルトの名無しさん2005/05/05(木) 21:30:42
マシン語で自己書き換えでデータと命令をごちゃごちゃにしたコードには感心した
スタックの使い方が絶妙だった一個ずらしとか
0035デフォルトの名無しさん2005/05/05(木) 21:44:01
どういう動きを予想したんだ
0036デフォルトの名無しさん2005/05/05(木) 22:16:01
>>34
まさに今、そんなプログラムのデバッグしてる。趣味でだけど。
ブートストラップするコンパイラ等では似た様な事してるね。
0037デフォルトの名無しさん2005/05/05(木) 23:05:59
>ブートストラップするコンパイラ

もっと詳しく
0038デフォルトの名無しさん2005/05/05(木) 23:50:48
Lisp, ML, Smalltalk とかの、実行環境がヒープをダンプしたイメージ中にあるやつ
0039デフォルトの名無しさん2005/05/06(金) 00:27:06
Lisp, ML, Smalltalkの実行環境のデバッグですか
0040デフォルトの名無しさん2005/05/06(金) 00:28:24
>実行環境がヒープをダンプしたイメージ中にあるやつ

単にその実行環境のコンパイラが吐いたコードじゃないかと。
0041デフォルトの名無しさん2005/05/06(金) 09:14:18
>>40
コンパイラが吐いたコード=実行環境(含むコンパイラ)な状態
0042デフォルトの名無しさん2005/05/06(金) 10:46:21
コンパイラが吐かないコード:     >>34 マシン語で自己書き換えでデータと命令をごちゃごちゃにしたコードには感心した

コンパイラが吐く可能性のあるコード:>>34 スタックの使い方が絶妙だった一個ずらしとか

>>36
> まさに今、そんなプログラム(>>34)のデバッグしてる。趣味でだけど。
> ブートストラップするコンパイラ等では似た様な事(>>34)してるね。

0043デフォルトの名無しさん2005/05/06(金) 11:06:30
何か行き違いがあるみたいだけど…、まぁいいか。
0044デフォルトの名無しさん2005/05/06(金) 11:50:54
>>34
寧ろ、データとして書き換え可能な領域が実行可能な
Intel プロセッサの間抜けぶりに寒心した。
0045562005/05/07(土) 03:15:04
>>34
具体的に、どんなコード?
例えば命令中に含まれる定数(ジャンプ先)を書き換えるレベルとか
ANDやORを使って、命令の対象のレジスタを直接変更するレベルとか…
0046672005/05/07(土) 05:04:06
コンパイラが吐かないコード:     >>34 マシン語で自己書き換えでデータと命令をごちゃごちゃにしたコードには感心した

コンパイラが吐く可能性のあるコード:>>34 スタックの使い方が絶妙だった一個ずらしとか

>>36
> まさに今、そんなプログラム(>>34)のデバッグしてる。趣味でだけど。
> ブートストラップするコンパイラ等では似た様な事(>>34)してるね。
0047デフォルトの名無しさん2005/05/07(土) 22:28:16
>>44
NT4の時代PAGE_EXECUTEをサポートしてるプロセッサなんて1つもありませんでしたが何か?
Intelプロセッサ「だけ」はセグメントをちゃんと使えばデータ領域を実行禁止にできたけど
0048デフォルトの名無しさん2005/05/08(日) 22:25:00
java

class Capsule {
private int i = 0;
public void setInt(int i) {
this.i = i;
}
public int getInt() {
return i;
}
public static void main(String[] args) {
Capsule capsule = new Capsule();
capsule.i = 10;
}
}

Capsuleクラスはカプセル化されている。privateな変数iには
通常、同じクラス内からでない限りアクセッサを通じてしかアクセスできない。

と、ここまでは普通だが、同じクラスであれば別インスタンスのprivateメンバに
直接アクセスできるのってちょっとびっくり。

実用で使う事があるのだろうか・・・
0049デフォルトの名無しさん2005/05/09(月) 02:20:13
public static void main()の例は、
テスト中に簡単な変更を試したい場合に使うから、
あんま違和感ないな。

同じクラスのインスタンスが、別のインスタンスを参照する
ようなインスタンス・メソッドというのは、

(1) public Capsule plus(Capsule adder) {
     setInt(getInt() + adder.getInt());
   }

みたいな場合と、

(2) Collection系クラスで設計がまずい場合。
  Collectionクラスと要素クラスに分離すべき。

にありそうだな。
他に、使いそうな場面ある?

0050デフォルトの名無しさん2005/05/09(月) 07:41:10
equalsとかcompareToとか。
0051492005/05/09(月) 08:45:38
(1) (plus, find, compareTo)も、(2) (例えば 双方向リンク・リスト)も、
同一クラスの他インスタンスのprivateメンバへのアクセスは、
「意図して行わないとできない」つまり「記述側が自己責任でおこなう」事。

ただしそれは大抵、良くない設計。アクセサ使え
 
0052デフォルトの名無しさん2005/05/09(月) 08:49:55
clone

まあ、元になったC++のコピーコンストラクタも
それが出来ないとどうしようもないけどな。

俺も最初は違和感があったよ。慣れたけど。
0053デフォルトの名無しさん2005/05/10(火) 10:50:25
予想外の動き
http://www.viscuit.com/whatis/
0054デフォルトの名無しさん2005/05/12(木) 14:59:17
>>4
そもそも結果を 1 と予想することの方が予想外・・・
4自身も「当たり前の結果だ」と書いているし。

i = ++i; で 0 になるなら意外だけど。
0055デフォルトの名無しさん2005/05/12(木) 15:57:04
>>54
ん?行われるはずのインクリメントが行われないのだから予想外だべ?
0056デフォルトの名無しさん2005/05/12(木) 17:41:10
;; int i = 0
add sp 4
xor eax, eax
mov ecx, sp
mov [ecx], 0
;; i = i ++;
mov eax, [ecx]   
inc eax
;; System.out.println(i);
call ...
0057↑とはならずに↓となる2005/05/12(木) 17:42:31
;; int i = 0
add sp 4
xor eax, eax
mov ecx, sp
mov [ecx], 0
;; i = i ++;
inc eax
;; System.out.println(i);
mov eax, [ecx]    ;; ← ローカル変数iを再ロード
call ...
0058デフォルトの名無しさん2005/05/12(木) 17:42:57
なんちゃって。
0059デフォルトの名無しさん2005/05/12(木) 18:45:12
i = i++;
↓
( i = i )++;
↓
i = ( i = i ) + 1;
↓
i = i + 1;
0060デフォルトの名無しさん2005/05/12(木) 18:53:27
>>57
 Java VMはスタック計算機だから、レジスターなどない。
 スタック計算機で、i++したら i++の結果が残りそうなもんだが、
 それを残さない仕様にしたのは、何か意味があるんだろ

>>59
 いみふめ。
0061デフォルトの名無しさん2005/05/12(木) 19:33:23
public class Test1 {
 public static void main(String args[]) {
 int i = 0;
 i = i++;
 System.out.println(i);
 return;
 }
}

C:\tmp> javap -classpath . -c Test1
(略)

Method void main(java.lang.String[])
 // int i = 0;
  0 iconst_0// int定数値0をレジスタにロード
  1 istore_1// int iに、レジスタ値(0)を格納
 // i = i++;
  2 iload_1// int iの値を、レジスタにロード
  3 iinc 1 1// スタック上のローカル変数実体 int iに、直接1を加算し代入。直接1を加算
  6 istore_1// int iにレジスタ値(元々0)を格納
 // System.out.println(i)
  7 getstatic #2 <Field java.io.PrintStream out>
 10 iload_2
 11 invokevirtual #3 <Method void println(int)>
 // return;
 14 return
0062デフォルトの名無しさん2005/05/12(木) 19:39:45
要するに
加算代入 (++や+=)は、JavaVMのiinc命令に翻訳する事になっていて、
iincは、RISCの3オペランド命令一個 (メモリ上の変数に加算代入)に翻訳する事を意図しているんで、
結果として iload → iinc → istore の順番で実行されて、iincの結果は打ち消される、つうことで。
0063デフォルトの名無しさん2005/05/12(木) 20:19:07
つーかそもそも i++ という式の値は、
インクリメントされる前の i である、
ということを知らない人もいそうな予感・・・
0064デフォルトの名無しさん2005/05/12(木) 20:36:24
それなら、
 int i=0, j=0;
 j = i++;
 System.out.println(j)
で充分だろ。
0065デフォルトの名無しさん2005/05/14(土) 12:34:28
早い話、副作用点の問題。
0066デフォルトの名無しさん2005/05/16(月) 20:57:45
ぷ

副作用が入れ子になっていて、
内側の副作用が打ち消される (>>61の 2〜6バイト目)
と言うべきだろう。
0067デフォルトの名無しさん2005/05/16(月) 22:11:32
>(>>61の 2〜6バイト目)
>(>>61の 2〜6バイト目)
>(>>61の 2〜6バイト目)
0068デフォルトの名無しさん2005/05/16(月) 22:23:14
>>61の (javapによる、mainメソッドのディスアセンブル結果の)
2〜6バイト目ですが、何か?

>Method void main(java.lang.String[])
>  2 iload_1// int iの値を、レジスタにロード
>  3 iinc 1 1// スタック上のローカル変数実体 int iに、直接1を加算し代入。直接1を加算
>  6 istore_1// int iにレジスタ値(元々0)を格納


0069デフォルトの名無しさん2005/06/01(水) 00:39:56
free(0);
0070デフォルトの名無しさん2005/06/01(水) 01:31:29
C++だとここの0はNULLと同義なので、freeの仕様的に
何も起こらないのが当然だが…
CでもNULLと等価だったかな、この0。
0071デフォルトの名無しさん2005/06/01(水) 01:41:43
仮に暴走したとしても暴走することが予想されるなら予想外の動きをしたとは言えない
0072デフォルトの名無しさん2005/06/01(水) 14:41:31
>>70
CではNULLは0または(void *)0だから、等価。
0073デフォルトの名無しさん2005/06/01(水) 19:49:16
で、>>69はどういう予想をしていたのだろう。
0074デフォルトの名無しさん2005/06/04(土) 03:42:17
>>71
暴走しないと思ってたのにコンパイラがANSI準拠じゃなくて暴走しますたとか。
0075デフォルトの名無しさん2005/06/04(土) 19:03:31
想定内でつ
0076デフォルトの名無しさん2005/06/10(金) 23:45:55
namespace hoge
{
  class T {};
  void f(T) {}
}

int main()
{
  hoge::T n;
  f(n); //エラーにならない!
}
引数依存の名前解決と言うそうだ。
0077デフォルトの名無しさん2005/06/11(土) 00:02:58
koenigの名前照合則とexceptionalC++かどっかに載ってた。

まあ、
std::cout << "abc" << std::endl;
が
std::operator <<(std::operator <<(std::cout, "abc"), std::endl);
としか書けなかったらみんな泣くだろ?ってことで。
0078デフォルトの名無しさん2005/06/11(土) 00:36:21
>>70
delete (hoge*)0;は何もしないのが基本なだけで、
C++でもfreeには0を渡してもいいということにはなってなくね?
0079デフォルトの名無しさん2005/06/11(土) 00:47:19
>>77
その場合はoperator <<()はメンバ。
0080SOURCE2005/06/11(土) 14:33:17
ActiveBasicで下を書いてみたテスト

ソースファイル名:1.abp

*A
Exec "1.exe"
goto *A

結果:フリーズする
0081デフォルトの名無しさん2005/07/12(火) 21:00:13
保守


int a=100;
int b=0;
int c=a/b;

が0除算エラーにならない。
(ただしコンパイラによると思ふ)
0082デフォルトの名無しさん2005/07/12(火) 21:28:20
最適化の次第では、結果を利用されていないコードが丸ごと
抹殺されるってやつか。
0083デフォルトの名無しさん2005/07/13(水) 14:36:26
JavaOneで例年行われているBOFが本になったようだ。

Java Puzzlers
http://www.amazon.co.jp/o/ASIN/032133678X

0084デフォルトの名無しさん2005/07/13(水) 22:47:54
0除算の結果は未定義だから仕様には違反しないな
0085デフォルトの名無しさん2005/07/13(水) 23:41:51
>>84
なるほど。
確かにエラーにならないよう動作させても構わないわけだ。
0086デフォルトの名無しさん2005/07/14(木) 00:02:27
すごくjavaが嫌いなんだが、仕事で仕方なく使ってる。

JAVAで、

String AAA = null;
String BBB = null;

String CCC;

CCC = AAA + BBB;


この結果

CCCには "nullnull"という文字列が入る。

なぜ CCにnullがはいらないのか謎。というか仕様なんだが。

0087デフォルトの名無しさん2005/07/14(木) 00:28:18
>>86
理由:ぬるぽ
0088デフォルトの名無しさん2005/07/14(木) 00:30:45
>>87
ガッ!


正直ぬるぽで落ちてもらったほうがまだいいのだが。
0089デフォルトの名無しさん2005/07/14(木) 01:51:26
Javaは好きだけどおれもそうおもふ。
文字列のnullチェックだけ面倒になってムカつく。
0090832005/07/14(木) 02:26:56
Java Puzzlersで、してやられてしまったコード(当然言語はJava)
トラップが3つあるのだが、3つめに気づかなかった。

Puzzle 23: No Pain, No Gain

import java.util.Random;

public class Rhymes {
 private static Random rnd = new Random();
 public static void main(String[] args) {
  StringBuffer word = null;
  switch (rnd.nextInt(2)) {
  case 1: word = new StringBuffer('P');
  case 2: word = new StringBuffer('G');
  default: word = new StringBuffer('M');
  }
  word.append('a');
  word.append('i');
  word.appned('n');
  System.out.println(word);
 }
}
0091デフォルトの名無しさん2005/07/14(木) 06:02:41
>>86
>
>CCC = AAA + BBB;



ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/StringBuffer.html
参照。

CCC = newStringBuffer().append(AAA).append(BBB).toString();
をやってるから。


public StringBuffer append(String str)

この文字列バッファに文字列を追加します。

String 引数の文字が、順番にこの文字列バッファの内容に追加されます。
その結果、引数の長さの分だけこの文字列バッファの長さが増えます。
str が null の場合、"null" の 4 文字がこの文字列バッファに追加されます。
0092デフォルトの名無しさん2005/07/14(木) 09:44:48
>>86
Java の String は言語仕様レベルで特別扱いされているから
そこはあきらめるしかないでそ。

この場合、StringBuffer#append がぬるぽで落ちないことの方が問題なのかもしれないが。
0093デフォルトの名無しさん2005/07/14(木) 17:37:36
add2(int max)
{
 int i,j=0;

 //printf("Func add2() called\n");
 for(i=1;i<=max;i++);
 {
  j+=i;
  //printf("%3d:%4d\n",i,j);
 }

 return j;
}
0094デフォルトの名無しさん2005/07/14(木) 20:21:27
>>93
forループで空文が実行されて、抜ける時点ではi=max+1になってるから、
j=max+1になるわけだが、どの当たりが予想外なの?
0095デフォルトの名無しさん2005/07/14(木) 20:30:02
>>94
>forループで空文が実行されて
ここだろ。。やる奴はやる。。
0096デフォルトの名無しさん2005/07/14(木) 21:53:33
for(i=1;i<=max;i++)
{
...
}

じゃなくて

for(i=1;i<=max;i++){
...
}

っていうスタイルで癖をつけておけば、空文forなんて絶対やらないぞ。
0097932005/07/14(木) 22:23:25
>>96
なるほど…勉強になります…
0098デフォルトの名無しさん2005/07/14(木) 22:42:44
>>96
俺が教えているやつは { と } の対応がなってないコードを書くから逆にそうはさせない。
こっちを使わせる。
for ()
{
}
0099デフォルトの名無しさん2005/07/14(木) 22:48:13
スタイル論議はスレ違い
0100デフォルトの名無しさん2005/07/14(木) 23:08:05
開きカッコを書いたらすぐ閉じカッコを書いてその後で中身を書け
0101デフォルトの名無しさん2005/07/14(木) 23:17:32
C++なら、for (int i = 1; ...とすることで防げるミスだね。
0102デフォルトの名無しさん2005/07/15(金) 02:17:42
>>100-101
そうだね。
でもミス防止法論議もスレ違いのような希ガス
0103デフォルトの名無しさん2005/07/15(金) 11:51:24
1+2*3
予想7
結果9
0104デフォルトの名無しさん2005/07/15(金) 12:13:33
ハァ?
0105デフォルトの名無しさん2005/07/15(金) 12:16:27
smalltalkかな。
0106デフォルトの名無しさん2005/07/15(金) 12:40:03
1+2
予想:3
結果:12
#スクリプト系言語によくある罠。
0107デフォルトの名無しさん2005/07/15(金) 17:41:29
"foo" + "bar"
予想:"foobar"
結果:コンパイルエラー
もちろんC
0108デフォルトの名無しさん2005/07/15(金) 20:22:32
//Win32API
#include <windows.h>
void main(void)
{
   BYTE fd_buf [ 1474560 ];
   HANDLE hfile;
   DWORD readsize;
   hfile = CreateFile ( "\\\\.\\A:" ...
   ReadFile ( hfile ...
   CloseHandle ( hfile );
}

予想:フロッピー丸読み
結果:ワトソン博士登場
0109デフォルトの名無しさん2005/07/15(金) 22:01:44
ちょとワロタ
0110デフォルトの名無しさん2005/07/16(土) 01:34:24
APIにバグがあるわけじゃなくて
> BYTE fd_buf [ 1474560 ];
だよね?
0111デフォルトの名無しさん2005/07/16(土) 10:33:58
>>108
はげしくワロタ
0112デフォルトの名無しさん2005/07/16(土) 23:04:18
マメワロス
■ このスレッドは過去ログ倉庫に格納されています