企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### printf函数 - printf函数被设计用来显示格式串( format string)的内容,并且在该串中的指定位置插入可能的值。 - 调用printf函数时必须提供格式串,格式串后面的参数是需要在显示时插入到该串中的值: `printf(格式串,表达式1 ,表达式2' . . ) ;` - 显示的值可以是常量、变盘或者更加复杂的表达式。调用printf函数一次可以打印的值的个数没有限制。 - 格式串包含普通字符和转换说明,其中转换说明以字符研头。转换说明是用来表示打印过程中待填充的值的占位符。跟随在字符革后边的信息指定了把数值从内部形式(二进制)转换成打印形式(字符〉的方法,这也就是“转换说明”这一术语的由来。 - 转换说明%d指定printf函数把int型值从二进制形式转换成十进制数字组成的字符串,转换说明%f对float型值也进行类似的转换。 示例 ~~~ #include <stdio.h> main(){ int i, j ; float x, y; i = 10; j = 20; x = 43.2892f; y = 5527.0f ; printf ( "i=%d, j=%d , x=%f, y=%f\n ",i , j , x, y); } ~~~ 输出结果 ~~~ i=10, j=20 , x=43.289200, y=5527.000000 ~~~ - 格式串中的普通字符被简单复制给输出行,而变量i 、j 、x和y的值则依次替换了4个转换说明 - C语言编译器不会检测格式串中转换说明的数量是否和输出项的数量相匹配 以下代码均错误 `printf("%d %d\n",i);` ` printf("%d\n",i,j);` - C语言编译器也不检测转换说明是否适合要显示项的数据类型. 如果程序员使用不正确的转换说明,程序将会简单地产生无意义的输出. ``printf("%f %d\n",i,x);``//其中int型变量i和 float型变量x的顺序放置错误 因为printf函数必须服从格式串,所以它将如实地显示出一个float型值,接着是一个int型值,可惜这两个值都将是无意义的。 ### C的输出函数转换说明含义 ~~~ %d - int %ld – long int %lld - long long %hd – 短整型 %c - char %f - float %lf – double %u – 无符号数 %x – 十六进制输出 int 或者long int 或者short int %o - 八进制输出 %s – 字符串 ~~~ * 占位符不要乱用 要选择正确的对应类型 否则可能会损失精度 * C字符串 * C没有String类型 C的字符串实际就是字符数组 * C数组定义 [ ]只能再变量名之后 * C字符串两种定义方式 char str[] = {'h','e','l','l','o','\0'};//注意'\0'字符串结束符 char str[] = "你好"; //这种定义方式不用写结束符 可以表示汉字 ### 代码 ~~~ #include<stdio.h> #include<stdlib.h> /** printf("要输出的内容", 变量); %d - int %ld – long int %lld - long long %hd – 短整型 short %c - char %f - float %lf – double %u – 无符号数 %x – 十六进制输出 int 或者long int 或者short int %o - 八进制输出 %s – 字符串 24910 二进制表示 01100001 01001110 12345678 二进制表示 10111100 01100001 01001110 占位符的使用注意不要乱用,可能会损失精度 */ main(){ char c='a'; short s = 123; int i = 12345678; long l = 1234567890; float f = 3.1415; double d = 3.1415926; printf("c = %c\n", c); printf("s = %hd\n", s); printf("i = %hd\n",i);//%hd – 短整型 short,short2个字节而int四个字节,这样short就会取出int低2个字节的数即输出24910 printf("l = %ld\n",l); printf("f = %.4f\n",f); //默认输出的是6位有效数字的小数 想手动指定 加上.X,多出的位用0补齐;.4表示小数点后面输出4位有效数字 printf("d = %.7lf\n",d); printf("%#x\n",i);//加上一个#,则自动添加前缀十六进制标志0x printf("%#o\n",i);//加上一个#,则自动添加前缀十六进制标志0x char cArray1[]={'a','b','c','d','\0'};//手动添加结束符号"\0",且结束符也占一个字节 char cArray2[]="abcd";//不需要手动添加,自动添加结束符号"\0",而且上面形式不可以输出汉字 char cArray3[]="你好"; printf("cArray1 = %s\n",cArray1); printf("cArray2 = %s\n",cArray2); printf("cArray3 = %s\n",cArray3); system("pause"); } ~~~ ![](http://i.imgur.com/vHY42mQ.png) **格式化输出语句** 格式化输出语句,也可以说是占位输出,是将各种类型的数据按照格式化后的类型及指定的位置从计算机上显示。这样做的好处,是有利于计算机能够准确的将我们所要类型数据给我们。 其格式为:printf("输出格式符",输出项); C语言中的常用格式化符: ![](http://img.mukewang.com/54856b620001e2ad04880099.jpg) 当输出语句中包含普通字符时,可以采用一下格式: ``` printf("普通字符输出格式符", 输出项); ``` ![](http://img.mukewang.com/5492b62e000181b403060044.jpg) 输出结果为: `a=10 ` 如果要输出多个变量的并指定变量的位置时候,格式符还可以连用,变量之间需要用逗号隔开,如: ![](http://img.mukewang.com/5492b6b5000145f904050080.jpg) 输出结果为: `整数:10,小数:7.560000,字符:c ` > 注意:格式符的个数要与变量、常量或者表达式的个数一一对应 #### 转义序列