基本格式字符含义详解
模式字符 | 数据类型 | 进制 | 计数法 | 备注 |
%c | char | - | - |
|
%s | char* | - | - |
|
%d,%i | int | 10 | - |
|
%u | unsigned int | 10 | - |
|
%o | unsigned int | 8 | - |
|
%x,%X | unsigned int | 16 | - | x,X的区别是数据中A-F的大小写的区别 |
%f | double | 10 | 浮点 | 12.34 |
%e,%E | double | 10 | 指数 | 1.234000e+001 |
%g,%G | double | 10 | 指数 OR 浮点 | 取其中较短的一种计数法 |
%a,%A | double | 16 | 指数 | Linux/gcc有定义 |
%p | void* | - | - | (C99) 等价于%08X,%#8x |
扩展格式字符含义
模式字符 | 可匹配模式 | 说明 | 数据类型 |
%l? | d,I,u,o,x,X | 长整形 | long int |
%h? | d,I,u,o,x,X | 短 整形 | short int |
%L? | a,A,e,E,f,F | 浮点类型 | long double |
%ll | - | - | long long(C99) |
%ls | - | - | wchar_t* |
基本格式字符串总的来说有4类
1) 字符 %c
2) 字符串 %s
3) 整数 %d
4) 浮点%f
浮点数测试
double x = 12.34;
printf("%f, %e, %E\n",x,x,x);
//打印 12.340000, 1.234000e+001, 1.234000E+001
double x = 12.34;
printf("%f,%g,%G\n",x,x,x);
//打印12.340000, 12.34, 12.34
double x = 12.34;
printf("%f,%a,%A\n",x,x,x);
//打印12.340000, 0x1.8ae147ae147aep+3, 0X1.8AE147AE147AEP+3
//模式a,A只在linux版本gcc有定义
%g测试
printf("%g\n",12345678.1234);
//打印 1.23457e+007
printf("%g\n",12.1234);
//打印 12.1234
//可见都是%g,但是提供的数据太大了自动按照指数方式打印不然就打印浮点,这个模式的时候程序会做判断
%p测试
//Linux/GCC
int a =2;
int *p=&a;
printf("%p\n",p); //0xbfa777b0
printf("%#8x\n",&a); //0xbfa777b0
//VC6
int a =2;
int *p=&a;
printf("%p\n",p); //0012FF44
printf("%08X\n",&a); //0012FF44