8、字符常量及字符变量
1)大写字母转小写字母
2)计算机没有必要直接存储字符,可以用某个数值来代替字符
printf("sizeof HelloWorld = %dn", sizeof("HelloWorld"));输出
//在字符串结尾处为了标记字符串已经结束,会填入’0‘用于标记字符串结束
‘ ' HelloWorld字符串被我们强行截断了,printf函数只打印出了Hello就认为结束了
'12'换行继续输出
听课重点
-如何表示字符并打印、如何定义字符与变量、ASCII、转义字符
9、printf函数详细解析
1)printf("XXX占位1 XXX 占位2 XXX占位3", 替换1, 替换2, 替换3);
有以下特点
-printf 是一个变参函数(参数的数量和类型不确定)
-printf 的第一个参数是字符串
-printf 的第一个参数是需要输出的字符以及需要被替换的占位符
-printf 的第二及后续参数将依次替换占位符
-占位符的类型和数量需要与后续的参数类型和数量对应
2)整数类型的占位符
-有符号整型的类型提升
对于有符号位的整型 char , short ,传入 printf 的可变参数时,会被提升为 int 。而比 int 更高级的 整型则不发生变化。
所以,在处理 char , short , int 时,均可使用 %d 来占位。 而在Visual Studio中 int 与 long 的范围一致,按理来说也可以使用 %d 来占位。 但是为了程序的可移植性,在切换到别的平台下时, int 和 long 有可能不一致。 所以,请使用 %ld 来为 long 占位。更高级的 long long 则需要使用 %lld 来占位。
结论: char,short,int使用 %d 。 long使用 %ld 。 long long使用 %lld 。
-无符号整型的类型提升
对于无符号位的整型 unsigned char , unsigned short ,传入 printf 的可变参数时,会被提升 为 unsigned int 。而比 unsigned int 更高级的整型则不发生变化
对于无符号整型,需要将 d 替换成 u 表明最高位不被看作符号位,而是数据位。
结论: unsigned char,unsigned short,unsigned int使用 %u 。 unsigned long使用 %lu 。 unsigned long long使用 %llu
- 浮点类型的类型提升
float 会被提升为 double , double 不发生变化。
结论: float,double均使用 %f
3)转换规范
前面称 以%开始的一串字符 为 占位符 。这是一个便于理解的说法,其实这个说法并 不准确。 更准确地说,它们应该被称为 转换规范
-总览
零个或多个标志字符(-,+,0,#)。
一个可选的十进制整数常量表示的最小字段宽度。
一个可选的用点号表示的精度范围,它的后面可以跟一个十进制整数。
一个可选的长度指示符,可以用下列字母组合之一来表示:h、hh、l、LL,z。
由单个字符表示的转换操作,取自下面这个集合:c、d、e、E、f、i、o、s、u、x、X
-转换操作
直接上图,相当清楚
注意
-为了保证转换正确,请严格使用与类型对应的转换操作
-初始化的值不得超过了数据类型可以容纳的数值范围
-e与E的区别为,一个使用小写e,一个使用大写E。
-o,x,X 转换操作,将获取sizeof(unsigned int)字节二进制数据。 o将数据按照无符号整型转换为八进制字符并输出。 x,X将数据按照无符号整型转换为十六进制字符并输出。 x与X的不同在于,一个使用小写字母,一个使用大写字母。
-长度指示符
在转换操作前增加一个 l 长度指示符,可以将转换操作获取的二进制长度升为更高一级的类型长度。
在转换操作前增加一个 h 长度指示符,可以将转换操作获取的二进制长度降为更低一级的类型长度。
-精度
转换操作可以制定一个可选的精度范围,用一个点号以及它后面一个可选的十进制正数表示。
精度范围用于控制:
1. d、i、o、u、x、X所打印的最小数字位数,不足将补齐。
2. e,E,和f转换中小数点右边的数字位数
-最小字段宽度
最小字段宽度指定输出的字符最小为多少个字符,如果不足,将使用空格补齐到指定的最小宽度
-标志
当我们使用了最小字段宽度时,如果字符不足最小宽度,那么将会用空格补齐到最小宽度。如果指定 了 0 作为标志,则会用字符0,来补齐到最小宽度。
- 打印的字符左对齐
+ 总是产生符号,+(正数)或-(负数)
# 八进制前加0,十六进制前加0x
听课重点
-类型提升、转换操作、长度指示符、精度范围、最小字段宽度、标志
日总结,今天学的信息比昨天大了很多,不过弄明白后还是易懂的。将课程给的pdf做了整理,
@你好编程
明天继续奥里给
暑期编程PK赛 得CSDN机械键盘等精美礼品!


