タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

ネタとCに関するshuzo_kinoのブックマーク (2)

  • [迷信] 'A'~'Z' の値は連続している | 株式会社きじねこ

    やろうとしていることは簡単です。標準入力から 1 文字読み込み、アルファベットの大文字であれば小文字に変換して標準出力に書き込んでいます。 ここで、アルファベットの大文字かどうかの判別には isupper を使うべきだと主張する方がおられるかもしれませんが、その主張は必ずしも正しくありません。なぜなら、isupper の挙動はその時点で設定されているロケールに依存するからです。確実に、'A'~'Z' の範囲に収まっているかどうかを判定するには、やはり自前で処理を書かなければなりません。 というわけで、isupper ではなく、自前で判定を行っていること自体は間違いではないわけですが、問題はその判定方法にあります。ASCII や ASCII と(ほぼ)互換性のある文字コードの場合、多バイト文字さえ考慮しなければ上のコードでも問題ありません。しかし、このコードには少なくとも移植性がありません。

    shuzo_kino
    shuzo_kino 2013/09/24
    >“標準 C/C++ の規格では、アルファベットの文字コードが連続していることが保証されていない”  な、何だってーー!?
  • プログラムは ASCII で書くべきだよ - 兼雑記

    ふと、 main = 195; とかやって喜んでいた私はバカだったんじゃないかと思いました。 Binary 2.0 などとうかれてほとんどバイナリのコードをゴルフに submit してたのはどうなのか、と。プログラムは ASCII で書くべきだったんじゃないでしょうかと。それもメンテナンスしやすいように、 isprint が true を返すような文字で書くべきではないのか、と。 とりあえず Hello, world! 書きました。そのままコピペでたぶん最近の x86 & linux & glibc なら動きます。それ以外の環境では無理です。 char main[]="`j X$@P[PYPPPPX4.4 PZUX, P^XH,=)F(P_X3F()8)8@)8@@)8)8@PYX@@@@CQBaGHello, world!\n"; int 0x80 とか ret とか ASCII の範囲

    プログラムは ASCII で書くべきだよ - 兼雑記
    shuzo_kino
    shuzo_kino 2013/03/06
    >char main[]="`j X$@P[PYPPPPX4.4 PZUX, P^XH,=)F(P_X3F()8)8@)8@@)8)8@PYX@@@@CQBaGHello, world!\n";  C言語でもたった一行でHello worldできるんですね(白目
  • 1