各数据类型常用的stdio格式

本文详细介绍了C语言中stdio格式的使用方法,包括各种数据类型的基本格式说明、格式标识及精度设置等内容。通过实例展示了如何正确地使用这些格式进行数据输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

紧接上一篇,贴一下各种数据类型的stdio格式,这东西其实挺麻烦记的

数据类型名称

字节数

别名

stdio基本说明格式

int

*

signed, signed int

%d, %i

unsigned int

*

unsigned

%u, %o, %x, %X

    

__int8

1

char, signed char

%hhd

__int16

2

short, short int, signed short int

%hd

__int32

4

long, long int, signed long int

%ld, (%I32d)

__int64

8

long long, long long int, signed long long int

%lld, (%I64d)

    

bool

1

 

 

    

char

1

signed char, (__int8)

%hhd, %c

unsigned char

1

 

%hhu, %hho, %hhx, %hhX

short

2

short int, signed short int, (__int16)

%hd

unsigned short

2

unsigned short int

%hu, %ho, %hx, %hX

long

4

long int, signed long int, (__int32)

%ld, (%I32d)

unsigned long

4

unsigned long int

%lu, (%I32u), %lo, %lx, %lX

long long

8

long long int, signed long long int, (__int64)

%lld, (%I64d)

unsigned long long

8

unsigned long long int

%llu, (%I64u), %llo, %llx, %llX

    

enum

*

 

 

    

float

4

%f, %e, %E, %g, %G

double

8

%lf, %le, %lE, %lg, %lG

long double

*

%llf, %lle, %llE, %llg, %llG

    

wchar_t

2

__wchar_t

 

    

char[]

*

 

%s

    

void *

*

 

%p

  

 

 

说明:

1、上述基本类型说明:

(1)、对于整数,d(i)代表有符号,u代表无符号,h和l分别用来进一步说明字长,防止出错,32位和64位整数还提供了I32和I64这样的说明格式;o和x(X)分别是八进制和十六进制输出,x和X只是字母大小写的区别,不过,形如%o%x%X这样的输出是没有前缀的,补充前缀的格式见下文;

(2)、对于浮点数,f是浮点输出,e(E)是科学计数法输出,后者同样是幂符号的大小写区别,l用来增补长度;g(E)则是取f和e(E)中的较短者输出;

2、格式标识

'正整数': 设置输出场宽,当输出实际长度大于设置场宽,则忽略该设置

'-'和'0': 无'-'和'0'时结果右对齐,左端补充空格;设置'-'时结果左对齐,右端补充空格;(对整数,还可以设置'0'表示右对齐,左端补充'0')

'+'和' ': 设置数字符号格式,'+'表示正负号都输出,' '表示只输出符号,不输出正号

'#': 设置几种数字的格式。对o:输出前缀0;对x(X):输出前缀0x(0X);对g(G):输出尾随0(默认是不输出尾随0的);对f:保证输出小数点(即使浮点后没有数字)

3、精度设置

'.正整数': 对f的设置,没有此设置时默认输出6位,注意:有舍入而非截去

 

总结:格式标志(如果可用)和精度设置(如果可用)插入在百分号和格式说明中间,即(下面用竖杆隔开):

"%|格式标志|精度设置|格式说明"

简单举一个例子:printf("%-12.8lf/n", doubleVar);

 

 

 

测试的时候发现了一些小问题:比如long double的实际精度确实没有想象的那么大

声明: 水平有限,可能有错漏的地方,欢迎批评指正 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值