C 言語の文字定数は 1 文字とは限らない!?

C において、文字定数 (character constant) とは、シングルクォートで囲まれた文字で、ただ一文字から成る。という勘違いをしてました。

実際には、複数の文字でも OK ということになってます。32 ビット int 型なら ASCII 文字が 4 つ入ります:

#include <stdio.h>

int
main (int argc, char *argv[])
{
    int c = 'abcd';
    char *p;

    for (p = (char *) &c; p < (char *) &c + sizeof (int); ++p) {
        printf ("%c", *p);
    }

    printf ("\n");
    return 0;
}

実行結果です:

dcba

エンディアンの関係で、文字の順番がひっくり返ってます。

この機能、どこにどうやって使うんだろう?

(コウヅ)

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中