格式化输出
1 整数
- %d 整数的参数会被转成有符号的十进制数字
- %u 整数的参数会被转成无符号的十进制数字
- %o 整数的参数会被转成无符号的八进制数字
- %x 整数的参数会被转成无符号的十六进制数字,并以小写abcdef 表示
- %X 整数的参数会被转成无符号的十六进制数字,并以大写ABCDEF 表示浮点型数
- %f double 型的参数会被转成十进制数字,并取到小数点以下六位,四舍五入
- %e double 型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的e 来表示
- %E 与%e 作用相同,唯一区别是指数部分将以大写的E 来表示
- %g double 型的参数会自动选择以%f 或%e 的格式来打印,其标准是根据打印的数值及所设置的有效位数来决定。
- %G 与%g 作用相同,唯一区别在以指数形态打印时会选择%E 格式。
2 字符及字符串
- %c 整型数的参数会被转成unsigned char 型打印出
- %s 指向字符串的参数会被逐字输出,直到出现NULL 字符为止
- %p 如果是参数是"void *"型指针则使用十六进制格式显示
打印二进制
void printBits(size_t const size, void const * const ptr){ unsigned char *b = (unsigned char*) ptr; unsigned char byte; int i,j; for (i = size-1; i >= 0; i--){ for (j=7;j>=0;j--){ byte = (b[i] >> j) & 1; printf("%u", byte); } } puts(""); } double a = 0.1; printBits(sizeof(double), &a);