字符和字符串
- 单引号中的是一个字符,这个字符计算机认识,可以叫做“字面值”,计算机通过ASCII表与这些符号的对应关系来识别它们。ASCII表的表示范围是0~127,其本质是一个有符号的Byte,即8个位,除去一位符号位,7位用来表示值。
- 双引号中的是字符串,可以称为字符串字面值常量;字符数组要额外多分配一个字节存储结束符’\0’。
类型转换
- (本质也是整型)char(1B) ——》short(2B) ——》 int(4B) ——》 long(4B) ——》long long(8B)
- 小变大,可以完全保留
- 大变小会有位的丢失,可能造成数据的错误。有“截断”
- 注意一点是,Int和float的转换并不是单纯的截取位数重新解释,而是尽量保证真值不改变
- float变量进行运算的时候需要首先进行对阶的操作。会造成“精度丢失”的问题,所谓精度丢失,就是当两个相差非常大的数做运算的时候,会因为“对阶”,使得小的数丢掉有效位而全变为0
- 有符号与无符号数的转换会首先保留数的位数,然后对每位进行重新解释。比如有符号的整数高位为1表示的是负数,到了无符号整数中,会因为 高位的1变成一个非常大的正数
输入和输出函数
- printf函数和scanf函数
- 引入一个概念叫“输入输出缓冲区”,叫“stdin”“stdout”,其存取规则是“先进先出”
+ 有三钟IO方式
1. 全缓冲:缓冲区满时IO :磁盘文件的IO
2. 行缓冲:行满时IO :标准输入输出
3. 直接IO :标准错误信息的输出
- scanf的%d格式控制符的特点:
- 缓冲区开始的空白字符(比如:‘ ’,‘\t’,’\n’),会被取出并丢弃
- 从读取第一个合法字符开始,直到遇到第一个非法字符结束(注意该非法字符仍在在STDIN中)
- scanf的%c格式控制符的特点:
- 不会忽略空白字符(在输入函数中,除格式控制符外允许有别的符号的例子只有是“ %c”,空格+%c)
- rewind(stdin);// 清空输入缓冲区
- scanf的返回值
- 成功读取的数量。可以是0
- EOF(-1)。不同于0(VS中是3次Ctrl + Z)
- getchar() :从stdin获取并返回下一个字符,如果到达文件末尾返回EOF
- putchar(char ch) :把ch写到stdout
- printf()
- 小数: %
.
d
\color{#FF0000}{.d}
.dd: 表示d位小数
- 任何书: %
d
\color{#FF0000}{d}
dd: 表示最小宽度为d
- %
−
\color{#FF0000}{-}
−d: 表示左对齐
运算符
- sizeof()
- 类型转换运算符:()
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 条件运算符
- 自增自减运算符