Problem set 4 - stdint.hつづき

whodunitのquestionsで幾つか気になったものをpickup.

①What’s the point of using uint8_t, uint32_t, int32_t, and uint16_t in a program?

  • 整数型に対応するビット数は、マシン&コンパイラ毎に異なる。よって、全ての人(マシン&コンパイラの組み合わせ)が同一のビット数の整数型を扱えるようにするため。みんなが同じ条件でコーディング出来るようにするため。
  • 自分(そのプログラムが)複数のパソコンで動作するようにするために、各々のマシン&コンパイラに割り当てられている。C言語は環境(マシン・コンパイラ)によって前提条件(ビット幅と表現範囲: -をつける時に一個ずれるとか)が違いすぎるから、それを揃えるため

②What’s stdint.h?
stdint.hはC言語の標準ヘッダ。指定の幅を持つ整数型を宣言し、それらの宣言に対応するマクロを定義している。また、他の標準ヘッダで定義された型に対応する整数型の限界値を示すマクロも定義する。
(参照サイトを失念...ごめんなさい)

stdint.h の中身はこんな感じらしい

typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef int int32_t;
typedef unsigned uint32_t;
typedef long int64_t;
typedef unsigned long uint64_t;
#define INT8_MIN (-128)
#define INT8_MAX (127)
#define INT32_MIN (-2147483648)
#define INT32_MAX (2147483647)
#define INT64_MIN (-9223372036854775808)
#define INT64_MAX (9223372036854775807)

最後に、参考サイト

cs50.stackexchange.com

C言語 fseek 使い方 | C言語関数一覧~bituse~, fseek,
C library function fseek()

fputc

  • おまけ)

_t: typedefで定義されたもの、の意(慣習的に使う)