prog
ネタが古いですが。以下をコンパイルした時に生成される class ファイルはいくつ? class C { enum E { } void m() { switch ((E)null) { } } }
'0' == 48 のとき、次の出力は? #include <stdio.h> int main() { puts( "0" "\0" "\\0"); puts( "\60" "\060" "\00060"); puts("\x30" "\x030" "\x00030"); }</stdio.h>
$ cat test.c #include <stdio.h> #include <limits.h> int main() { int x = INT_MAX, y = INT_MAX; x = x * 10; x = x / 10; y = (y * 10) / 10; printf("%d <-> %d\n", x, y); } $ gcc-3.3 test.c && ./a.out -1 <-> -1 $ gcc-4.0 test.c && ./a.out -1 <-> 2147483647出てく</limits.h></stdio.h>…
びっくりするくらい時流に乗れていない僕のことですから全く関知していなかったのですが、Java にクロージャが入るとか入らないとかいう話でこんなのが出てたんですね(ひょっとすると、これももはや最新ではないかも知れません)。個人的には、わざわざ(恐…
Java 1.5 ということでひとつ。 (Byte) (byte)-1 == (Byte) (byte)-1 (Character) (char)-1 == (Character) (char)-1 (Short)(short)-1 == (Short)(short)-1 (Integer) (int)-1 == (Integer) (int)-1 (Long) (long)-1 == (Long) (long)-1 (byte)-1e100 < (by…
java.lang.Object.run() て。 $ cat Main.java class Main<T extends Object & Runnable, S extends T> { public void callRun(S x) { // ここの S を T に変えると正常に動く x.run(); } public static void main(String[] args) { new Main<MyRunnable, MyRunnable>().callRun(new MyRunnable()); } } class MyRunnable implem</myrunnable,></t>…
配列だと怒られない不思議。 $ cat Data.java class Data<T> { T scalar; T[] array; static void assign(Data x) { x.scalar = "hoge"; x.array[0] = "hoge"; } } $ javac Data.java Data.java:5: 互換性のない型 検出値 : java.lang.String 期待値 : capture </t>…
次の Java プログラムに 1 単語だけ書き足して、いつも停止しないようにしてください。書けるのはアルファベットだけです。 class Main { static long one = 1; public static void main(String[] args) { new Thread(new Runnable() { public void run() { …
「スレッドセーフ」という保証は、具体的には何を保護しているか。 import java.util.*; public class Main { static Vector<Object> vec = new Vector<Object>(); static ArrayList<Object> arr = new ArrayList<Object>(); public static void main(String[] args) { new Thread(new Runnab</object></object></object></object>…
$ cat Main.j #define STR(x) #x #define STR_DEEP(x) STR(x) import java.util.*; public class Main { public static void main(String[] args) { Object obj = new Object(); TYPE<Object> list = new TYPE<Object>(); long time = System.currentTimeMillis(); for (int </object></object>…
CCured について調べていたら、ポインタを初期化する際に malloc() に sizeof の値を渡す場合はどうのこうの、という話が出て来た。で思い出したんですが、id:kosak:20060801 で「初期化子から初期化対象の変数が見えるとか意味わからん」的なことを書いたけ…
import java.lang.reflect.*; class Main { public static void main(String[] args) throws Exception { Constructor init = Hoge.class.getDeclaredConstructors()[0]; Field ans = Hoge.class.getDeclaredField("answer"); init.setAccessible(true); ans…
import java.lang.reflect.*; class Main { public static void main(String[] args) throws Exception { Hoge hoge = new Hoge(); System.out.println(hoge.x); Field f = Hoge.class.getField("x"); f.setAccessible(true); f.setInt(hoge, 2); System.out…
某日記(ネタ帳?)より勝手にインスパイヤ(すみません...)。Java で try { throw new RuntimeException("hoge"); } catch (Exception e) { throw new RuntimeException("fuga"); } finally { throw new RuntimeException("piyo"); }と書いたら何が投げら…
Java でラベルを付けられるのはループの文だけかと思いきや、本当は何でもいいらしい。という訳で、C の int hoge() { ...何かする...; if (...エラー...) goto error; return 0; error: ...エラー処理...; return -1; }という感じのプログラムは、Java では…
前々から書いてみたいと思っていた Pascal を某所で書いてみた。せっかくなので無駄にレコードやら何やらを使ってみたら Runtime Error しか出ない…。というか、そもそも手元にコンパイラが無いので何が起こっているのか良く分からない。 それはともかく、さ…
C 言語との互換性とかいう謎の目的のためか、Java は妙な作りになってる部分がいくつかあるわけですが(const が無駄にキーワードだったり)、さすがに class Hoge { int[] hoge()[] { return new int[1][2]; } }これは要らなかったんじゃないかなぁと思った…
std::vector やら java.util.Vector*1 はスペースが足りなくなると 2 倍に膨れるのだが、今まで自分でそういう構造を書く時には、何となく定数ずつ増量するようにしていた。でも、よく考えたらそれだと要素の追加が償却定数時間にならないっぽい。それ直した…
なんか最近プログラムの記事ばっかなので、今日は趣向を変えると見せかけてまたプログラムの記事。Church 数の前者関数は、ペアを使って let pred n = fst (n (fun (x,y) -> (y,y+1)) (0,0))みたいにすると割と簡単に作れるものの、かなり複雑になる。機械的…
(define (quote x) (cons (lambda (x) (lambda (y) (lambda (z) ((x z) (y z))))) x)) (define (quasiquote x) (cons (lambda (x) (lambda (y) x)) x)) (define (unquote x) (if (null? (cdr x)) (car x) (cons ((cadr x) (car x)) (cddr x)))) (,,,,,`,`'`,…
(gcc 拡張でない)C99 として正しい? enum { k = 0 && (1 / 0) }; void f(void g(void *())) { int a[][3] = { 1, 2, 3, 4, 5, }; char s[] = { "Hello" }, c = { 1 }; }
gcc 4.1.1 にて。 #include <stdio.h> int x = (int)(1./0.); int main() { int y = (int)(1./0.); printf("%d %d", x, y); return 0; }a[1/0];(by id:namasute0)</stdio.h>
実行結果は何でしょう。 Java: public class Main { public static void main(String[] args) { Integer Integer = 1; System.out.println((Integer)Integer); System.out.println((Integer)-Integer); System.out.println((Integer)(Integer)-Integer); Sy…
class A<T> extends B<T,B<T,A<T>>> { } class B<T,S> { } class C<T extends A<A<T>>, S extends A<A<A<S>>>> { <T> T lub(T x, T y) { return x; } A<T> x = lub(new A<T>(), new A<S>()); }上のプログラムを javac に食わせると何が起こるでしょうか。 構文エラーが報告される 型エラーが報告される その他 それで</s></t></t></t></a<a<s></t></t,s></t,b<t,a<t></t>…
あのね かも 定義 定義。 あのね なの 仕事 する かも。 あのね でしょ? あのね あのね んっとね。あのね あのね わかる?。あのね あのね あのね でも。あのね でも あのね わかる? あのね んっとね んっとね。。。なの。わかる?。なの。なの。かも。 あ…
上の記事を書くために仕様書を調べていて、ふーんと思ったことをメモしておく。 unsigned int は int unsigned とも書けるし、typedef int hoge は int typedef hoge とも書ける。C はフランス語圏の人にも優しい言語のようだ。しかし int hoge typedef とは…
C 言語だと、変数の初期化子の中で当該の変数が見える [C99*1, 6.2.1]。たとえば、どっかのブロックの中で int x = x + 1;と書くと、右辺の x は、たった今宣言したばかりの(そして未初期化の)x を指している。未初期化の自動変数の値は不定なので、この仕…
class C<T> { T a; { new C<Integer>().a++; } }かつてコンパイラを作っていたときに、こんなようなコードを書いて困った覚えが。あの時は、たしか C じゃなくて Ref とかいうクラス名で、フィールドは a じゃなくて contents だったけれど(ええ、Java にはポインタがな</integer></t>…
恐ろしいことに、最近、C 言語とかいうものを何のためらいもなく書けるようになってしまったようだ。さらに悪いことには、出来上がったプログラムはどれもヘンテコなものばかりで、そろそろ悪魔の出すぎで鼻が痛い。今日も 3 匹は出た。今度出てきたら名前で…