概要
概要
i386 + gcc にて,8 バイト整数 (long long) を利用する.
対象は次のようなものです.
FreeBSD/i386 用の gcc の整数には,short (16bit),int (32bit),long (32bit),long long (64bit) およびそれらの unsigned があります.
long long は次のように利用します.
#include <stdio.h> int main(void) { long long t; unsigned long long u; t = 314159265358979323LL; /* 定数には LL を付ける. */ u = 314159265358979323ULL; /* 定数には ULL を付ける. */ printf("t = %lld\n",t); /* 入出力の書式は ll を付加する. */ printf("u = %llu\n",u); /* 入出力の書式は ll を付加する. */ return 0; }
どこかに例示されていたのですが,long long である変数の入出力の書式に qd のように q を付加しても正常に動作します. しかし,これは本来 long long ではなく quad_t, u_quad_t のための書式であり,またマニュアルには "deprecated" と書かれているので,使わない方が良いでしょう.
(補足) FreeBSD/amd64 用の gcc では long は 64bit であり,long long と同じです. long の入出力のに書式には l を,また定数には l または L を付加します.
上記の情報は,以下の man page では見つかりませんでした.
% man printf
こちらにならあります.
% man scanf % man vfprintf % man vfscanf
libc のソースはこちらにあります.
/usr/src/lib/libc/stdio/vfprintf.c /usr/src/lib/libc/stdio/vfscanf.c