赞
踩
printf():将格式化输出发送至标准输出流stdout,即将格式字符串显示到屏幕,函数原型如下:
int printf ( const char * format, ... );
printf()函数的参数分为两类:
(1)format:格式字符串;
(2)… :参数列表。
在printf()函数中:
在格式字符串中,除了转义序列和转换说明,剩余的部分都属于字面文本量,字面文本量按照原样显示在屏幕上,代码如下图所示:
int main()
{
int a = 11;
printf("The value of a = %d\n", a);
printf("\n");
return 0;
}
上面代码中,printf()函数的格式字符串包括:
代码运行结果如下图所示:
关于转义序列:
转义序列有两个用途:
常用的转义序列如下图所示:
转换说明以百分号字符’%'开头,格式如下:
%[flags][width][.prec][length]type
即
%[标志][最小宽度][.精度][类型长度]类型。
类型是转换说明中比不可少的部分,用于指定printf()函数按照何种格式输出表达式的值,常用的类型如下图所示:
示例代码如下图所示:
int main () { printf("以%%d形式打印有符号整数\n"); printf("%d\n", -123); printf("\n"); printf("以%%u形式打印无符号整数\n"); printf("%u\n", 123); printf("\n"); printf("以%%x/X形式打印无符号整数\n"); printf("%x\t\t%X\n", 123, 123); printf("\n"); printf("以%%f形式打印浮点数\n"); printf("%f\n", 0.123456789); printf("\n"); printf("以%%e/E形式打印浮点数\n"); printf("%e\t%E\n", 0.123456789, 0.123456789); printf("\n"); printf("以%%c形式打印字符\n"); printf("%c\n", 65); printf("\n"); printf("以%%s形式打印字符串\n"); printf("%s\n", "Hello World!"); printf("\n"); printf("以%%p形式打印指针\n"); printf("%p\n", "Hello World!"); printf("\n"); return 0; }
代码运行结果如下图所示:
特别说明:
在打印整形数据时,只有%d对应int型和%u对应unsigned int型,而没有与char、unsigned char、short、unsigned short、long、unsigned long、long long和unsigned long long等数据类型对应的转换说明类型。于是,类型长度应运而生,常用的类型长度如下图所示:
特别说明:与scanf()函数不同,在printf()函数中,无论float类型还是double类型,都使用%f格式进行输出,不存在%f对应float类型变量,%lf对应double类型变量的说法。
示例代码如下图所示:
int main() { printf("以%%hhd形式输出signed char\n"); printf("signed char = %hhd\n", 0xff); printf("\n"); printf("以%%hhu形式输出unsigned char\n"); printf("unsigned char = %hhu\n", 0xff); printf("\n"); printf("以%%hd形式输出signed short\n"); printf("signed short = %hd\n", 0xffff); printf("\n"); printf("以%%hu形式输出unsigned short\n"); printf("unsigned short = %hu\n", 0xffff); printf("\n"); printf("以%%ld形式输出signed long\n"); printf("signed long = %ld\n", 0xffffffff); printf("\n"); printf("以%%lu形式输出unsigned long\n"); printf("unsigned long = %lu\n", 0xffffffff); printf("\n"); printf("以%%lld形式输出signed long long\n"); printf("signed long long = %lld\n", 0xffffffffffffffff); printf("\n"); printf("以%%llu形式输出unsigned long long\n"); printf("unsigned long long = %llu\n", 0xffffffffffffffff); printf("\n"); return 0; }
代码运行结果如下图所示:
精度以小数点开头,后跟十进制整数,常用于指定浮点数的精度(小数点后数值位数),默认精度是6。
示例代码如下图所示:
int main() { printf("默认精度\n"); printf("Default precision = %f\n", 1000.123456789); printf("Default precision = %f\n", 1000.12345); printf("\n"); printf("超过精度-截断\n"); printf("More than specified precision = %.8f\n", 1000.123456789); printf("\n"); printf("不足精度-填充\n"); printf("Less than specified precision = %.8f\n", 1000.123456); printf("\n"); return 0; }
代码运行结果如下图所示:
最小宽度用十进制整数来表示输出的最少位数,包括整数位、小数点和小数位。
示例代码如下图所示:
int main() { printf("输出整数-小于最小宽度\n"); printf("Integer less than specified width = %6d\n", 123); printf("\n"); printf("输出整数-大于最小宽度\n"); printf("Integer more than specified width = %6d\n", 12300000); printf("\n"); printf("输出浮点数-默认精度-小于最小宽度\n"); printf("Float-point default precision less than specified width = %10f\n", 1.23); printf("\n"); printf("输出浮点数-默认精度-大于最小宽度\n"); printf("Float-point default precision more than specified width = %6f\n", 1.23); printf("\n"); printf("输出浮点数-指定精度-小于最小宽度\n"); printf("Float-point specified precision less than specified width = %10.3f\n", 1.23); printf("\n"); printf("输出浮点数-指定精度-大于最小宽度\n"); printf("Float-point specified precision more than specified width = %10.10f\n", 1.23); printf("\n"); return 0; }
代码运行结果如下图所示:
特别说明: 精度优先级高于最小宽度优先级,先将浮点数的小数位填充或截断至默认精度或指定精度,然后再考虑最小宽度。
常用的标志如下图所示:
示例代码如下图所示:
int main() { printf("以16进制前缀形式显示整数\n"); printf("%#x\n", 123); printf("%#X\n", 123); printf("\n"); printf("指定最小宽度-默认右对齐-默认左侧填充空格\n"); printf("%10d\n", 123); printf("%10f\n", 1.23); printf("\n"); printf("指定最小宽度-默认右对齐-指定左侧填充数字0\n"); printf("%010d\n", 123); printf("%010f\n", 1.23); printf("\n"); printf("指定最小宽度-指定左对齐-右侧填充空格\n"); printf("%-10d\n", 123); printf("%-10f\n", 1.23); printf("\n"); return 0; }
代码运行结果如下图所示:
在printf()函数中:
示例代码如下图所示:
int main() { int a = 11; int b = 22; int c = 33; printf("表达式比转换说明多\n"); printf("%d %d\n", a, b, c); printf("\n"); printf("转换说明比表达式多\n"); printf("%d %d %d %d\n", a, b, c); printf("\n"); return 0; }
代码运行结果如下图所示:
返回值类型为int型:
C语言标准描述如下:
1. Each of these functions returns the number of characters printed, or a negative value if an error occurs.
示例代码如下图所示:
int main()
{
int ret_val = 0;
printf("The return value of printf() function = %d\n\n", ret_val = printf("Hello World!\n"));
return 0;
}
代码运行结果如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。