クラスCでcase 1のような定義をすると特異クラスに
クラスインスタンス変数を定義できますが,
クラスC2でcase 2のように定義すると特異クラスに
クラス変数を定義できると思いましたが,以下の方法だとクラスC2
クラス変数を定義していることが確認できました.

class C # case 1
  class << self
    @val = 100
  end
end

class C2 # case 2
  class << self
    @@val = 100
  end
end

確認したコマンド

2.1.5 :002 > C2.singleton_class.class_variables
 => [] # ここが[:@@val]になると思ったが違う!
2.1.5 :003 > C2.class_variables
 => [:@@val] 

特異クラスにクラス変数を定義することは少ないかと思いますが,
なぜこのようになるのでしょうか