今日のバグ

Shift_JIS、能、1行コメント

なんかプログラムの挙動がおかしい。 cerrに吐かれるはずのログすら一部出ない。でも最終結果を見ると実行はされているようだ。 で、その原因切り分けたら以下のようなものだった。 Shift_JISで int main(){ // 利用可能 printf("hoge\n"); printf("fuga\n")…

doubleを一度メモリに入れると値がずれる

よくある話です。 浮動小数点演算ではまった話 - bkブログにあるのと本質的には同じ。 要約すると #include<stdio.h> double a[100]; int main(int argc, char *argv[]) { volatile union{ long long a; double d; } A, B; A.a = 0xfff0000000000001LL; B.d = A.d; //</stdio.h>…

華麗に型推論をすり抜ける

誤: print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b") (Printf.sprintf "%s = %s;\n" "a" "b") )正: print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b"…