输出函数printfprintf函数的格式为-Read
格式化输出函数:printf,f...

格式化输出函数:printf,f...总览 (SYNOPSIS)#include <stdio.h>int printf(const char *format, ...);int fprintf(FILE *stream, const char *format, ...);int sprintf(char *str, const char *format, ...);int snprintf(char *str, size_t size, const char *format, ...);#include <stdarg.h>int vprintf(const char *format, va_list ap);int vfprintf(FILE *stream, const char *format, va_list ap);int vsprintf(char *str, const char *format, va_list ap);int vsnprintf(char *str, size_t size, const char *format,va_list ap);描述 (DESCRIPTION)printf 系列函数根据下述的 format 参数生成输出内容. printf 和 vprintf 函数把输出内容写到 stdout, 即标准输出流; fprintf 和 vfprintf 函数把输出内容写到给定的 stream 流(字符流设备); sprintf, snprintf, vsprintf 和 vsnprintf 函数把输出内容存放到字符串 str 中.这些函数由格式字符串 format 参数控制输出内容, 它指出怎么样把后面的参数 (或通过 stdarg 的变长参数机制访问的参数) 转换成输出内容.这些函数返回打印的字符数量 (不包括字符串结尾用的`/0'). snprintf 和 vsnprintf 的输出不会超过 size 字节 (包括了结尾的 `/0'), 如果因为这个限制导致输出内容被截断, 则函数返回 -1.格式字符串 (format 参数) 由零到多个指令组成: 普通字符(除 % 外), 它们被原封不动的送到输出流; 以及格式转换说明(conversion specification), 每个格式转换说明都会从后面提取零到多个参数. 格式转换说明由 % 字符引导开始. 参数必须正确的对应到格式转换符 (conversion specifier) 上. 下述字符按顺序列在 % 后面:*零个或多个下列标志:#指出数值应该转换成 "其他形式". 对于 c, d, i, n, p, s, 和 u 格式转换, 这个选项没有影响. 对于 o 格式转换, 数值的精度被提高, 使输出字符串的第一个字符为零 (除非打印一个零值时, 明确定义精度为零). 对于 x 和 X 格式转换, 非零数值前面会添加 `0x' 字符串(或 X 格式转换的 `0X' 字符串). 对于 e, E, f, g, 和 G 格式转换, 其结果始终含有一个十进制小数点, 即使后面没有数字 (一般说来, 只有当格式转换后, 小数点后面有数字时才显示小数点). 对于 g 和 G 格式转换, 将不删去结果末尾的零, 其他情况下这些零应该删掉. 0指出用零填充结果. 所有的格式转换, 除了 n, 转换结果的左边用零填充, 而不是空格. 如果数值转换时给定了精度, (d, i, o, u, i, x, 和 X), 则忽略 0 标志.-(负位宽标志) 指出转换结果必须在位边界上向左边对齐. 除了 n 格式转换, 转换结果的右边用空格填充, 而不是在左边填充空格或零. 如果同时给出了 - 和 0 , 则 - 覆盖 0 .' '(空格) 指出在通过有符号数(signed) 格式转换 ( d, e, E, f, g, G, 或 i ) 产生的正数前面留一个空格.+指出有符号数格式转换产生的结果前面始终有一个正负符号. 如果同时给出了 + 和空格, 则 + 覆盖空格.'指出在数字参数中, 如果 locale 给出相关信息, 输出结果将被分组. 注意, 许多版本的 gcc不能理解这个选项, 因而会产生一个警告.*一个可选的十进制数, 指出最小的位宽. 如果格式转换后产生的字符数少于位宽, 则左边用空格填充 (或者填充右边, 如果给出了向左对齐标志), 直到填满指定的位宽.*一个可选的精度, 格式是一个句号(`.') 后面跟着一个可选的数字. 如果没有给出这个数字, 则精度取为零. 这样就指定了 d, i, o, u, x, 和 X 格式转换显示的最小位数, e, E, 和 f 格式转换小数点后面显示的位数, g 和 G 格式转换显示的最大有效位数(significant digits), 或 s 格式转换打印某个字符串的最多字符数目.*可选的字符 h, 指出后面的 d, i, o, u, x, 或 X 格式转换对应为 short int 或 unsigned short int 的参数, 或者是后面的 n 格式转换对应为指向 short int 参数的指针.*可选的字符 l (ll) 指出后面的 d, i, o, u, x, 或 X 格式转换应用到指向 long int 或 unsigned long int 参数的指针, 或者后面的 n 格式转换对应为指向 long int 参数的指针. Linux 提供和 ANSI 不兼容的双 l 标志, 作为 q 或 L 的同义词. 因此 ll 可以结合浮点格式转换使用. 但是强烈反对这个用法.*字符 L 指出后面的 e, E, f, g, 或 G 格式转换对应 long double 参数, 或者让后面的 d, i, o, u, x, 或 X 格式转换对应 long long 参数. 注意 long long 没有在 ANSI C 中声明, 因此不能够移植到所有的体系平台上.*可选的字符 q 等于 L. 参考 STANDARDS 和 BUGS 节关于 ll, L,和 q 的叙述.*字符 Z 指出后面的整数 (d, i, o, u, x, 或 X) 格式转换对应 size_t 参数.*指出采用格式转换类型的字符.可以用星号 `*' 代替数字指定域宽或精度, 也可以两者同时指定. 这种情况下要求用一个 int 参数指出域宽或精度. 负域宽被认为是正域宽跟在向左对齐标志后面; 负精度被认为是精度丢失.格式转换符(specifier) 及其含义如下:diouxX将 int 形 (或合适的变量) 参数转换输出为有符号十进制数 (d 和 i), 无符号八进制数 (o), 无符号十进制数(u), 或者无符号十六进制数 (x 和 X). x 格式转换用小写字母 abcdef ; X 格式转换用大写字母 ABCDEF .精度值 (如果给出) 指出必须显示的最少数字; 如果转换结果少于这个要求, 则用零填补转换结果的左边.eE将 double 参数舍入后转换为 [-]d.ddde/*(Pmdd 的格式, 这个格式的小数点前面有一位数字, 后面表示精度; 如果没有指出精度, 则意味着精度是 6; 如果精度是 0, 则不显示小数点. E 格式转换使用字母 E (而不是 e) 要求引入指数. 指数至少包含两个数字; 如果值是零, 则指数是 00.f将 double 参数舍入后转换为 [-]ddd.ddd 的十进制表达式, 这个格式小数点后面的数字表示精度. 如果没有指出精度, 则意味着精度是 6; 如果显式给出精度是 0, 则不显示小数点. 如果显示了小数点, 则小数点前面至少有一位数字.g将 double 参数以 f 或 e (或者 G 格式转换的 E 标志) 的形式转换. 其精度指出有符号数字的数目. 如果没有指出精度, 则默认为 6; 如果精度是零, 则按 1 处理. 如果格式转换后其指数小于 -4 或者大于等于其精度, 则使用 e 形式. 转换结果消除了分数部分末尾的零; 小数点前面至少有一位十进制数字.c将 int 参数转换为 unsigned char, 然后输出对应的字符.s认为 ``char *'' 参数是指向字符形数组的指针 (指向字符串). Printf 输出数组内的字符, 直到遇上 (但不包括) 结束字符 NUL ; 如果给出了精度值, printf 不会输出多于这个值的字符, 也不需要提供 NUL 结束符; 如果没有给出精度值, 或精度值大于数组长度, 则数组内一定要包括一个 NUL 字符.p将以十六进制数打印 ``void *'' 指针参数 (就象是 %#x 或 %#lx). n将目前已经输出的字符数目存储在 ``int *'' (或变量) 指针参数指向的地址. 不转换任何参数.%输出一个 '%'. 不转换任何参数. 完整的写法是 `%%'.不指定域宽或偏小的域宽不会导致内容被截断; 如果转换结果的长度超过其域宽, 则域宽会扩大到容下完整的结果.示例 (EXAMPLES)以 `Sunday, July 3, 10:02' 格式显示日期, 其中 weekday 和 month 是字符串指针:#include <stdio.h>fprintf(stdout, "%s, %s %d, %.2d:%.2d/n", weekday, month, day, hour, min);显示五位十进制数:#include <math.h>#include <stdio.h>fprintf(stdout, "pi = %.5f/n", 4 * atan(1.0)); //atan( ) 函数返回数值表达式的反正切弧度值。
printf函数

printf("请输入变量a,b,c的值: ");//屏幕提示
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
4.如何退出输入:
*** 当数据输入完成后,按下回车。
*** 当输入的数据类型不同或非法字符,按下回车。
3.如何进行输入:
***当输入的数据间是连续的:
#include <stdio.h>
void main()
{ int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
>>> 输入的数据间要有分隔符(空格、tab、回车)
例如:
#include <stdio.h>
void main()
{ int a=0,b=0,c=0;
printf("请输入变量a,b,c的值: ");//屏幕提示
scanf("%d%d%d",&a,&b,&c);
// scanf("%d",&a);scanf("%d",&b);scanf("%d",&c);
2.修饰符:
宽度控制 m 左对齐- 前导0
---以整型数据为例:
#include <stdio.h>
printf函数的用法

printf函数的用法printf可以用来输出不同类型的数据,如整数、字符、字符串等,其语法为:printf(显示字符串 printf(显示变量变量值);尤其需要注意的是:printf函数中的字符串是可变的,因此,在printf函数中应避免使用变量,防止出现意想不到的情况。
三、printf数的参数printf函数的最后一个参数是一个或多个值,这些值将被按照一定的格式显示出来,这就是printf函数的格式控制字符。
printf 函数可以使用以下两种格式控制字符:1.转义字符,如“t”、“”等,可以让printf函数自动生成换行、制表符、空格等。
2.格式控制符,如“%d”、“%s”等,用于指定字符、整数、浮点数、字符串等数据的输出格式。
四、printf数的常用格式控制符1. %d:可以把整数格式化输出;2. %f:可以把浮点数格式化输出;3. %s:可以把字符串格式化输出;4. %c:可以把字符格式化输出;5. %p:可以以十六进制的形式输出指针的地址;6. %u:可以以十进制的形式输出无符号整数;7. %x:可以以十六进制的形式输出无符号整数;8. %o:可以以八进制的形式输出无符号整数;五、printf数的高级用法1.以使用转义字符组合,在printf函数中制作一个表格:printf(%s | %s | %s学号姓名分数 printf(%s | %s | %s,1张三90 printf(%s | %s | %s,2李四802.以使用printf函数的对齐功能进行输出对齐:printf(|%-10s | %-10s | %-10s|学号姓名分数 printf(|%-10s | %-10s | %-10s|,1张三90 printf(|%-10s | %-10s | %-10s|,2李四80六、总结printf函数是C语言中重要的输出函数,其形式为:int printf(const char *format,...);它的功能是将按照一定的格式输出到显示器上。
c语言 printf原型

c语言printf原型摘要:1.C语言简介2.printf函数概述3.printf函数的格式和参数4.示例与实践5.总结与建议正文:C语言作为一门广泛应用的编程语言,拥有丰富的函数库,为程序员提供了极大的便利。
在C语言中,printf函数是一款非常实用的输出函数,可以用于向控制台输出各种类型的数据。
下面我们将详细介绍printf函数的原型、格式及应用。
一、C语言简介C语言是一种高级编程语言,由丹尼斯·里奇(Dennis Ritchie)于20世纪70年代在贝尔实验室开发。
C语言具有跨平台、高性能、易于学习等特点,被广泛应用于操作系统、嵌入式系统、游戏开发等领域。
二、printf函数概述printf函数是C语言中用于输出信息的常用函数之一,它的功能是将格式化的数据输出到标准输出设备(通常是屏幕)。
printf函数的原型为:```cint printf(const char *format, ...);```这是一个带有可变参数的函数,格式化字符串和相应参数列表通过尖括号传递给函数。
三、printf函数的格式和参数1.格式:printf函数的格式字符串与printf函数调用时的参数列表密切相关。
格式字符串中可以包含普通字符、转义字符和格式控制符。
2.参数:printf函数的参数分为两类:普通参数和格式控制符参数。
- 普通参数:用于输出数据,可以是整型、浮点型、字符型等。
- 格式控制符参数:用于指定输出数据的类型,如%d表示整型,%f 表示浮点型,%c表示字符型等。
四、示例与实践下面我们通过一个简单的示例来演示printf函数的使用:```c#include <stdio.h>int main() {int age = 25;float score = 85.5;char name[] = "张三";printf("姓名:%s", name);printf("年龄:%d", age);printf("成绩:%.2f", score);return 0;}```这段代码首先包含了<stdio.h>头文件,然后定义了一个main函数。
C语言printf()函数的格式控制符

C语⾔printf()函数的格式控制符C语⾔中,printf()函数针对输出不同的数据类型,有不同的格式控制符,此处汇总了⼀些常⽤的格式控制符:%hd⽤来输出 short int 类型,hd 是 short decimal 的简写;%d⽤来输出 int 类型,d 是 decimal 的简写;%ld⽤来输出 long int 类型,ld 是 long decimal 的简写。
%c:输出⼀个字符。
c 是 character 的简写。
%s:输出⼀个字符串。
s 是 string 的简写。
%f:输出⼀个⼩数。
f 是 float 的简写。
在输出整数⽅⾯,格式控制符和整数的符号是紧密相关的,具体就是:%d 以⼗进制形式输出有符号数;%u 以⼗进制形式输出⽆符号数;%o 以⼋进制形式输出⽆符号数;%x 以⼗六进制形式输出⽆符号数。
printf函数并不⽀持“输出负的⼋进制或者⼗六进制数”。
下表总结了不同类型的整数,以不同进制的形式输出时对应的格式控制符(--表⽰没有对应的格式控制符)short int long unsigned short unsigned int unsigned long⼋进制------%ho%o%lo⼗进制%hd%d%ld%hu%u%lu⼗六进制------%hx 或者 %hX%x 或者 %X%lx 或者 %lX对于⼀个有符号的正数,它的符号位是0,当按照⽆符号数的形式读取时,符号位就变成了数值位,但是该位恰好是0⽽不是1,因此,⽤%o 或者%x输出,不会有影响;如果⼀个有符号整数是负数,这时候⽤%o或者%x输出,则结果就会⼤相径庭。
可以说,“有符号正数的最⾼位是0”这个巧合才使得%o和%x输出有符号数时不会出错⼩数的输出格式:%f 以⼗进制形式输出float类型;%lf 以⼗进制形式输出double类型;%e 以指数形式输出float类型,输出结果中的 e ⼩写;%E 以指数形式输出float类型,输出结果中的 E ⼤写;%le 以指数形式输出double类型,输出结果中的 e ⼩写;%lE 以指数形式输出double类型,输出结果中的 E ⼤写。
C语言中printf格式

/*输出字符 c=A*/ /*输出字符的 ASCII 码值
stdio.h, 这是一个头文件, 其中包括全部标准输入输出库函数的数据类型定义 和函数说明。 Turbo C2.0 对每个库函数便用的变量及函数类型都已作了定义与说明, 放在相应头文件"*.h"中, 用户用到这些函数时必须要用#include<*.h>或 #include"*. h" 语句调用相应的头文件, 以供连接。若没有用此语句说明, 则 连接时将会出现错误。 二、scanf()函数 scanf()函数是格式化输入函数, 它从标准输入设备(键盘) 读取输入的 信息。 其调用格式为: scanf("<格式化字符串>", <地址表>); 格式化字符串包括以下三类不同的字符; 1. 格式化说明符: 格式化说明符与 printf()函数中的格式说明符基本 相同。 2. 空白字符: 空白字符会使 scanf()函数在读操作中略去输入中的一 个或多个空白字符。 3. 非空白字符: 一个非空白字符会使 scanf()函数在读入时剔除掉与 这个非空白字符相同的字符。 地址表是需要读入的所有变量的地址, 而不是变量本身。这与 printf() 函数完全不同, 要特别注意。各个变量的地址之间同","分开。 例 2: main() { int i, j; printf("i, j=?\n"); scanf("%d, %d", &i, &j); } 上例中的 scanf()函数先读一个整型数, 然后把接着输入的逗号剔除 掉, 最 后读入另一个整型数。如果","这一特定字符没有找到, scanf()函数就终止。 若 参数之间的分隔符为空格, 则参数之间必须输入一个或多个空格。 说明: (1). 对于字符串数组或字符串指针变量, 由于数组名和指针变量名本 身就 是地址, 因此使用 scanf()函数时, 不需要在它们前面加上"&"操作符。 例3 mian() { char *p, str[20]; scanf("%s", p); /*从健盘输入字符 串*/
printf输出格式总结

printf输出格式总结printf函数称为格式输出函数,其关键字最末⼀个字母f即为“格式”(format)之意。
其功能是按⽤户指定的格式,把指定的数据显⽰到显⽰器屏幕上。
printf函数调⽤的⼀般形式printf函数是⼀个标准库函数,它的函数原型在头⽂件“stdio.h”中。
但作为⼀个特例,不要求在使⽤ printf 函数之前必须包含stdio.h⽂件。
printf函数调⽤的⼀般形式为:printf(“格式控制字符串”, 输出表列)其中格式控制字符串⽤于指定输出格式。
格式控制串可由格式字符串和⾮格式字符串两种组成。
格式字符串是以%开头的字符串,在%后⾯跟有各种格式字符,以说明输出数据的类型、形式、长度、⼩数位数等。
如:“%d”表⽰按⼗进制整型输出;“%ld”表⽰按⼗进制长整型输出;“%c”表⽰按字符型输出等。
⾮格式字符串原样输出,在显⽰中起提⽰作⽤。
输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该⼀⼀对应。
格式字符串1) 类型类型字符⽤以表⽰输出数据的类型,其格式符和意义如下表所⽰:格式字符意义d以⼗进制形式输出带符号整数(正数不输出符号)o以⼋进制形式输出⽆符号整数(不输出前缀0)x,X以⼗六进制形式输出⽆符号整数(不输出前缀Ox)u以⼗进制形式输出⽆符号整数f以⼩数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串2) 标志标志字符为 -、+、# 和空格四种,其意义下表所⽰:标志意义–结果左对齐,右边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号#对c、s、d、u类⽆影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e、g、f 类当结果有⼩数时才给出⼩数点。
3) 输出最⼩宽度⽤⼗进制整数来表⽰输出的最少位数。
若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
print类型函数详解

/*预分配100个字符空间. */
int size = 100;
char *buffer = (char *) xmalloc (size);
while (1)
{
/*输出格式化的字符到给定的空间中. */
int nchars = snprintf (buffer, size,"value of %s is %s",name, value);
本函数跟printf函数很类似,只是将参数的数目可变的,变成了一个指针的列表。
4.7 Vfprintf()函数
int vfprintf (FILE *stream, const char *template, va_list ap)
本函数跟fprintf函数很类似,只是将参数的数目可变的,变成了一个指针的列表。
int i=617; /*定义整型变量并初始化*/
FILE *fp; /*定义文件指针*/
fp=fopne("test.dat", "w"); /*建立一个文字文件只写*/
fputs("Your score of TOEFLis", fp);/*向所建文件写入一串字符*/
fputc(':', fp); /*向所建文件写冒号:*/
/*判断是否返回真值*/
if (nchars < size)
return buffer;
/*如果空间不够,加大预分配空间到2倍*/
size *= 2;
buffer = (char *) xrealloc (size, buffer);
}
}
4.5 asprintf()函数
int asprintf (char **ptr, const char *template, ...)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
关于vc6.0输出的说明:
65535相当于0x0000ffff,-1是正1算术负的结果相当于 0xffffffff,这两个整型常数为4字节的,a,b是两字节的短整 型变量,初始赋值a=65535,b=-1使得a,b在内存的二进制 数据是16个1即1111111111111111。 h修饰符对a,b内存的二进制数按短整型转换输出, %hd对内存最高位为1的数进行间接求补输出-1。 %hu将内存的最高位视为数据的一部分,因此输出十 进制数65535。
格式转换说明符数多于其后表达式的个数则结果是不确 定的,此种情况应予以避免,即禁止 printf ("%d, %f,%d",x, y) 的形式。如果格式转换符数少于表达式的个数,后面多余的 表达式将不予转换处理。
3
1、整型数的格式输出转换
(1) %d或%i 输出有符号十进制数,根据实际长度输 出。 %d与%i在scanf系列函数中有所不同。无宽度控制 时,多个数据首尾相连地输出。例如: printf ("%d, %d",12,12345); //输出12,12345 (2) %ld,l表示long型数据的转换,%hd,h表示short型 数据的转换。下面用醒目地表示空格。 long a=12345678L; short b=4321; printf ("%9ld,%3hd",a,b); //输出:1234565678,4321 printf 函数显示时不保留数据的后缀。后缀用于鉴别数 据的确切类型。
10
2、字符和字符串的输出转换
(1) %c将值在0~255的整数即1字节整数以字符方式输 出。可以指定格式宽度。例如: int a=97; printf( "%d, %c ", a, a); //输出:97,a char c='c'; printf ("%d, %c ", c, c); //输出:99,c char b='b'; printf ("%3d,%3c ",b, b); //输出:98,b printf ("%-3d, % - 3c ", b, b); //输出:98,b
4
(3) %wd, %0wd,%-wd 。 %wd 为右对齐方式。%-wd 为左对齐方式。宽度w为 指定的输出字符个数,如果数据的字符个数小于w,左段补 充空格。 %0wd格式控制中的0表示输出前导字符0,左边差额处 补0。 如果数据的字符个数大于w,输出实际数据的长度。 右对齐方式左补空格,左对齐方式右补空格。 printf ("%5d, %5d", 12,123456); //输出12,123456 printf ("%05d,%05d",12,123456); //输出00012,123456
8
[例] #include <stdio.h> //定义在函数外全局范围的变量a,b是全局变量 signed short a=65535;
// warning: 'initializing' : truncation from 'const int' to 'short'
unsigned short b=-1; //-1的内存状态是唯一的,内存状态的解释或输出是多样的 void main () { printf ("[ %d, %u, %010X]\n",a,a,a); //输出:[-1,4294967295,00FFFFFFFF] printf ("[%d,%u,%012X]\n",b,b,b); //输出:[65535,65535,00000000FFFF] } //int型数据在32位模式占4个字节
5
(4) %o将整数以8进制形式输出; %x将整数以16进制形式输出; %u将整数以10进制形式输出; 这三个格式无论整数是有符号或无符号,一律将二进制 数据的最高位作为数据的有效部分转换即视为无符号数输出。 内存数据是二进制的是唯一的,显示的方式则是多样的。 %0wx , %0wu格式控制中的0表示输出前导字符0,差 额处补0。输出宽度为w。
6
[例] #include <stdio.h> void main () //定义在函数体中的变量a,b是局部变量 { signed short a=65535; // warning: 'initializing' : truncation from 'const int' to 'short' unsigned short b=-1; //-1初始化无符号的短整型数b printf ("[%hd, %4hu, %4ho, %x]\n", a, a, a, a); //输出:[-1,65535,177777,ffffffff] printf ("[%hd, %4hu, %4ho, %x ]\n", b, b, b, b); //输出:[-1,65535,177777,ffff ] } //sizeof (0xffff)= sizeof (-1)=4
2
printf语句就将内存数据项sum根据格式%d进行转换 并显示出来。输出项是各种有值的表达式。 printf函数可存在一个以上的输出数据,一般输出格式 控制的格式转换字符与输出项的个数一致。它们根据各自的 次序一一对应,如下所示:
printf ("...x =%f, ... y=%x, ...z=%d,...\n", x, y, z );
七、输出函数printf 八、输入格式转换函数scanf
1
七、输出函数prБайду номын сангаасntf
printf函数的格式为: printf ("输出格式控制",输出项1,输出项2,...); 输出格式控制由转义序列、格式转换说明符和普通字符 构成, 格式转换说明符由“%”和格式字符组成,如"%d,%f“ 中的d,f是格式字符。 它们结合在一起指定内存数据的输出格式。普通字符是 原样输出的字符。如: printf ( "Sum is %d,\n", sum) 中的Sum 以及逗号是普通字符。 "\n"对应回车换行的转义序列,转义序列的作用是输出控制 代码和特殊字符。
9
当不存在修饰符h时,%d,%u输出int型数据,对于1 6bit二进制数1111111111111111;
如果这个数视为有符号的,则带符号扩展,最高位为1 时扩展为32为16进制的0xffffffff。 如果这个数视为无符号的,则最高的16位填充以0,因 此扩展为16进制的0x0000ffff。