Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。
著作とお薦めの品々は
著作とお薦めの品々は 東方熱帯林へ。
わんくま
CodeZine
@IT
AWARDS
Microsoft MVPfor Visual Developer - Visual C++
Wankuma MVPfor いぢわる C++
Nyantora MVPfor こくまろ中国茶
Xbox
Links
ネタ元はこちら→列挙型を使う(その2)
enum 出世魚 { // 名前は違えど同じ魚 ワカシ, イナダ = ワカシ, ワラサ = ワカシ, ブリ = ワカシ}
public class Program { public static void Main() { System.Console.WriteLine(出世魚.ブリ); }}実行結果は「イナダ」となりました…なんで?なんで「ブリ」じゃないの? なんで「ワカシ」でもないの?
投稿日時 : 2007年3月13日 11:33
同じ魚なら何が出力されてもいいんじゃないっすか~~。 出世魚で区別したいなら違う値入れてちょ。 「イナダ」が出力されるのは、もしや名前の順でしょうか!?
備後ですな。 コンパイラが列挙名準に内部では入れ替えているILになってます。 値からどの列挙名になる化のルックアップをする際に、内部の列挙名をO(1)でしらべてるんだろうから、そのときに入れ替わるのでしょう。 System.Enumの実装に拠る。不定値ってかんじですね。
さっすが魚ネタ。二匹も釣れたー♪ # 誰がうまいことを言えと うん、何が出力されてもいいけど、なんでわざわざ「イナダ」なの? ってな。 lookupの都合スか。そーなんでしょね。
Visual Basic で書いたら '0' が出力されて一瞬困ったとりこびとが来ましたよ。 ToStringするとイナダでしたが。 ツバス → ハマチ → メジロ → ブリな私は関西人♪
typedef int INT; std::cout << typeid( INT ) << std::endl; なんで答えは"int"なの? ってのを思い出した。 #関係あるような無いような。
訂正。 std::cout << typeid( INT ).name() << std::endl;
Powered by: Copyright © επιστημη