タグ

lispとjavaに関するpipeheadのブックマーク (2)

  • 負数の剰余を計算してはならない - おともだちティータイム

    負数が含まれる剰余を計算した場合、言語に跨がって一意な結果が得られない。 -5 % 3 5 % -3 C -2 2 C++ -2 2 Java -2 2 Ruby 1 -1 Python 1 -1 Common Lisp 1 -1 さて、なぜこんなことが起きるのかというと、剰余には複数の定義が存在するからである。 m ÷ n = q … rこの r を剰余と言うが、 r の範囲が 0 ≤ r < n 最小非負剰余 -n/2 ≤ r < n/2 絶対値最小剰余 の二つの定義があり、一般的には前者の「最小非負剰余」を用いるようである。 m が負数、 n が正数の場合は、先程の表にあるプログラミング言語は以下のように分類される。 絶対値最小剰余 C C++ Java 最小非負剰余 Ruby Python Common Lisp しかし、最小非負剰余では r が正数になる必要があり、剰余の結果が

    負数の剰余を計算してはならない - おともだちティータイム
    pipehead
    pipehead 2012/04/09
    絶対値最小剰余: C, C++, Java; 最小非負剰余: Ruby, Python, Common Lisp
  • スコープとエクステントまとめ - t2ru's blog

    ABCLのソースを読んでるうちにスコープとエクステントについてだんだんわかってきたので、自分なりに少しまとめてみた。合ってるかどうかはわからないので、すべてに?がついていると考えてください。 スコープ アクセス可能な場所的範囲 エクステント アクセス可能な時間的範囲 言語 種別 スコープ エクステント コンパイラ・インタプリタでの検索方法(典型例) 実装上の領域(典型例) C ローカル(auto)変数 ブロック内 ブロックに入って時点から出た時点まで 関数の変数宣言リスト スタック C ブロック内のstatic変数 ブロック内 プログラムの開始から終了まで 関数の変数宣言リスト データ領域 C トップレベルのstatic変数 ファイル内 プログラムの開始から終了まで コンパイル単位の変数宣言リスト データ領域 C グローバル変数 ファイル内、extern宣言により別ファイルの変数を参照可

    スコープとエクステントまとめ - t2ru's blog
    pipehead
    pipehead 2009/01/15
    スコープ: アクセス可能な場所的範囲; エクステント: アクセス可能な時間的範囲
  • 1