赞
踩
语法:printf(格式字符串,[参数列表]);
注意:使用 printf 打印数据时,待打印的数据的类型一定要和格式字符串中的转换说明相匹配!!!
如果对格式转换符还不了解的,可以点击这里查看格式转换符
数字
表示最小字段宽度。
如果需要打印的数据宽度小于该数字,那么在前面自动补空格;如果需要打印的数据宽度大于等于该数字,正常打印。默认是右对齐的,搭配 - 表示左对齐。搭配 0 表示不足补 0,而不是空格。
#include <stdio.h>
int main()
{
int i = 100;
printf("*%d*\n",i);
printf("*%6d*\n",i);
printf("*%-6d*\n",i);
printf("*%06d*\n",i);
getchar();
return 0;
}
*100*
* 100*
*100 *
*000100*
.数字
表示精度。
对于浮点数来说,精度就是显示小数点后几位,如果浮点数小数点后位数比这个数字小,则补零;如果浮点数小数点后面位数比这个数字大,则四舍五入。
对于整型数来说,精度就是待打印的数据的最小位数,如果待打印数据位数不足,前面补零。
PS:如果 0 标记和精度一起出现,0 标记会失效。
printf("*%06.4d*\n",i);// 0标记失效,输出* 0100*
转换说明把以二进制格式储存在计算机中的值转换成一系列字符(字符串)以便于显示。例如,数字76在计算 机内部的存储格式是二进制数01001100。%d 转换说明将其转换成字符 7 和 6,并显示为 76;%x 转换说明把相同的值(01001100)转换成十六进制记数法 4c;%c 转换说明把 01001100 转换成字符 L。
// 转换说明不匹配示例1
short j = -336;
// 将一个负数打印为无符号 short int 类型,输出结果是65200
printf("%hu\n",j);
// 转换说明不匹配示例2
int k = 336;
// 将大于256的数打印为 char 类型,输出结果是 P,其 ASCII 是 80
printf("%c\n",k);
// 转换说明不匹配示例3
float n1 = 3.0;
double n2 = 3.0;
long n3 = 2000000000;
long n4 = 1234567890;
// 将 long 类型数据n3和n4打印为 double 类型数据。
printf("%.1e %.1e %.1e %.1e\n", n1, n2, n3, n4);
// 将 double 类型数据n1和n2打印为 long 类型数据。
printf("%ld %ld %ld %ld\n", n1, n2, n3, n4);
// 打印为e计数的浮点数
3.0e+000 3.0e+000 3.1e+46 1.7e+266
// 打印为 long 类型数据
0 1074266112 0 1074266112
具体情况因编译器实现而异。这个结果是《C Prime Plus》中的结果,我在 Windows 下运行的结果是 0 0 2000000000 1234567890,在 Ubuntu 下运行的结果会报错,它严格要求转换说明是匹配的,不允许输出格式是 long 类型,而参数是 double 类型的。
如果printf()语句有其他不匹配的地方,即使用对了转换说明也会生成虚假的结果。用%ld转换说明打印浮点数会失败,但是在这里,用 %ld 打印 long 类型的数竟然也失败了!
解释:该调用告诉计算机把变量n1、n2、、n3和n4的值传递给程序。这是一种常见的参数传递方式。程序把传入的值放入被称为栈(stack)的内存区域。 计算机根据变量类型(不是根据转换说明)把这些值放入栈中。因此,n1被储存在栈中,占8字节(float类型被转换成double类型)。同样,n2也在栈中占8字节,而n3和n4在栈中分别占4字节。然后,控制转到printf()函数。该函数根据转换说明(不是根据变量类型)从栈中读取值。%ld转换说明表明 printf()应该读取4字节,所以printf()读取栈中的前4字节作为第1个值。这是 n1的前半部分,将被解释成一个long类型的整数。根据下一个%ld转换说 明,printf()再读取4字节,这是n1的后半部分,将被解释成第2个long类型的 整数(见图4.9)。类似地,根据第3个和第4个%ld,printf()读取n2的前半部分和后半部分,并解释成两个long类型的整数。因此,对于n3和n4,虽然用对了转换说明,但printf()还是读错了字节。
printf() 返回打印的字符的个数,如果输出有错误,则 printf() 返回一个负值。
printf() 的返回值是其打印输出功能的附带用途,通常很少用到,但在检查输出错误时可能会用到(如,在写入文件时很常用)。
注意计算输出的字符个数是针对所有的字符,包括空格和不可见的换行符(\n)。
// 方法1
printf("Here's one way to print a ");
printf("long string.\n");
// 方法2
printf("Here's another way to print a \
long string.\n");
// 方法3
printf("Here's the newest way to print a "
"long string.\n"); // ANSI C
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。