(本人小白一枚,以下内容为学习记录,若有错误或表述问题,希望能得到指正)
占位符是一种特殊字符或字符串,用于表示将来要填充的值的位置,通常用于字符串替换或格式化。它们是在程序运行时动态生成的,以便将实际值插入到占位符的位置。
占位符可以在代码运行时为输入的数据进行占位,不同类型的占位有不同的格式,帮助程序员控制输出的格式,使代码更加简洁、易读。
其中,不同的占位符代表不同的数据类型
种类
- %d : 整数(decimal-十进制)
- %ld :长整型
- %u :无符号整数(unsigned)
- %f : 浮点数(float)
- %e :指数形式输出实数(指定浮点类型,%e对应float,%E对应double)
- %g :自动选择%f、%e输出实数(不输出无意义的0)
- %c : 单个字符(character)
- %s : 字符串(string)
- %p : 指针的值(pointer)
- %x : 十六进制整数(小写字母)
- %X :十六进制整数(大写字母)
- %o : 八进制数(octal)
- %n :输出已经输出的字符数
- %%:输出百分号
下面就个别类型举一些例子。
例1、%e
该占位符用来以指数形式输出实数,意思即用科学计数法,如将500写成5*(10)^2。
int main() { printf("%e", 500.0); return 0; }
讯享网
显示结果为5.000000e+02,意思是5*10^2。
例2、%c
如果使用char类型变量,该变量在内存中以ASCII值形式储存,其运算即是对ASCII值进行运算,运算结果在%c的前提下转为字符,看一下下面的代码

讯享网int main() { char b = 0 ; scanf("%c", &b); printf("%c\n", b); printf("%c\n", b+1); return 0; }
在scanf输入字符9,在内存中会对应到ASCII值57,57+1=58,而58对应的字符却是 : ,因而b+1的结果不是10。
东江一笑的博客:Ascii完整码表(256个)
例3、%s
字符串可以看作字符的数组,每个字符相互独立。
int main() { char b[10] = { '1','0','0','0' }; printf("%s\n", b); char c[10] = "1000"; printf("%s\n", c); char d[4] = "1000"; printf("%s\n", d); return 0; }

由于变量d的空间全被使用,没有多余空间交给\0(结束标志),因此出现错误。
例4、%c与%s
给char类型变量赋值,该值根据使用的占位符不同会输出不同的结果。
字符与ASCII值能通过%c、%d相互转换输出(需要注意字符9和数字9是两个不同概念)
讯享网int main() { char a[10] = { 0 }; a[1] = 36; printf("%c\n", a[1]); printf("%d\n", a[1]); char b = 36; printf("\n%d\n", b + 1); printf("%c\n", b + 1); char c = '9'; printf("\n%c\n", c+1); printf("%d\n", c+1); return 0; }



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/127743.html