1、格式化输入输出
CPU、内存、I/O设备在快速发展的过程中,有一个核心矛盾一直存在,就是三者之间的速度差异
平衡三者之间鸿沟的有效手段就是引入缓存
键盘---->stdin(内存,行缓冲区,标准输入缓冲区)---->程序---->stdout(内存,行缓冲区,标准输出缓冲区)---->屏幕
printf会输出到stdout缓冲区中
2、printf函数
作用:显示格式串中的内容,并用后面表达式的值替换格式串中的转换说明
Tips:printf函数可以将其他类型的数据转换成字符数据,输出到stdout缓冲区中
%m.pX和%-m.pX
m:显示的最小字符数量,若小于则用空格填充,若大于则自行扩充,默认右对齐,(小数点也算一个字符)例如:%5.4d---()0123
-m:左对齐
p:十进制整型:显示数字最小个数,不足在前面添加0,默认是1
浮点型:小数点后面数字的个数,默认是6
浮点型的缺点:不精确
3、scanf函数
作用:根据格式串读取 stdin 中的字符,并将字符转换成指定类型的数据后,写到后面表达式所指定的位置
Tips:scanf函数可以从stdin缓冲区中读取字符数据,然后转换为其他类型的数据,并写道后面表达式所指定的位置
scanf函数从左到右依次匹配,若其中一项没有匹配成功,则不会处理剩余部分,直接返回;例如:scanf("%d%f%d"),输入100abc,犹如%f读取失败,会直接返回,不论是否可以被第二个%d会被跳过
匹配规则:
%d:忽略前置的空白字符(空格符、换行符、制表符、水平制表符),然后匹配十进制的整数
%f:忽略前置的空白字符,然后匹配浮点数
注意:当scanf函数不会忽略后置的空白字符,只有在下一次读取输入时,才会忽略释放空白字符
格式串中的普通字符
空白字符:匹配多个或0个空白字符,直至遇到非空白字符出现才会终止
其他字符:精确匹配,是什么字符就要匹配什么字符,例如:scanf("%d/%d"),若输入3 /4,则会出错,会匹配到空白字符,匹配不到/导致出错
4、整数类型(unsigned short<=65535,unsigned int<=42.9亿)
默认情况下时有符号,且c语言整数类型的取值范围根据机器的不同而不同
不同机器又要遵循的原则:①最小字节长度:short(2),int(2),long(4),long long(8)
②各个整型类型的字节长度满足:short <= int <= long <= long long
4、整数类型(unsigned short<=65535,unsigned int<=42.9亿)
默认情况下时有符号,且c语言整数类型的取值范围根据机器的不同而不同
不同机器又要遵循的原则:①最小字节长度:short(2),int(2),long(4),long long(8)
②各个整型类型的字节长度满足:short <= int <= long <= long long
整数字面值:
十进制:不得以0开头,15,25;(以下均是建立在十进制基础上)
字面值类型通常是int,若不断加大数值,则会变为unsigned int,然后是long、unsigned long、long long、unsigned long long
将整数字面值类型改为long:15L
将整数字面值类型改为long long:15LL
将整数字面值类型改为无符号:15U
将整数字面值类型改为无符号long:15UL------其中字母大小写均可,U的位置也均可,但是推荐是大写且推荐U写到前面
八进制:必须以0开头,017,025;
十六进制:必须以0x开头,0xff,0x7ff;(其中x大小写均可)
读/写整数:printf/scanf
十进制int型:%d,十进制short型:%hd,十进制long型:%ld,十进制long long型:%lld;
标签:字符,short,5.5,笔记,scanf,整数,long,十进制 From: https://blog.51cto.com/u_13606048/6247990