一、数据类型
1. 布尔型(c99中引入的布尔类型)
头文件stdbool.h
二、各种数据类型的长度
- sizeof()单位是字节
- 用法:
sizeof(类型)
sizeof 表达式 表达式可以省略(),但是类型不能省略括号
- sizeof求表达式长度时,当后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。
因为s是short类型,长度为2byte,计算s的长度打印出来还是2byte
- sizeof运算符的返回类型,c语言规定是无符号整数,并没有规定具体的类型
- 当不确定返回什么类型时,可以用%zd打印
三、signed(包含负号)和unsigned
- 修饰字符串和整型类型
- int(默认带有正负号),如果要int不带正负号,就使用关键字unsigned声明
unsigned int a
- char(是否带有正负号,由当前系统决定)
- %d打印有符合的整数
- %u打印无符号的整数
四、变量
1.经常变化的值称为变量,不变的值称为常量
2.分类:全局变量,局部变量
3. 其实当局部变量和全局变量同名的时候,局部变量优先使用
输入:
输出:10
4.全局变量和局部变量在内存中存储在哪里?
- 局部变量是放在内存的栈区
- 全局变量是放在内存的静态区
- 堆区是⽤来动态内存管理的
五、算术操作符:+ - * / %(双目操作符)
1. 双目操作符
操作符有两个操作数,这种操作符称为双目操作符
2. /
除号两端是整数,则执行整数除法,得到的结果也为整数
(1)用%f打印整数,计算的结果就一定是错误的
打印时,占位符要和数据类型匹配,否则会得到错误的结果
输入:
输出:
(2) 尽管变量y的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,而不是 1.5 。原因就在于 C 语 言里的整数除法是整除,只会返回整数部分,丢弃小数部分
输入:
输出:
(3)如果要返回浮点数,则除号的一边要为小数4——4.0
3. %(取模)——只能用于整数,不能用于小数
(1)返回的是两个整数相除的余数
(2)结果的正负号由第一个运算数的正负号决定
六、赋值操作符 =
(1)连续赋值——从右向左赋值
c=b=a+3
(2)复合赋值
a+=3 //a=a+3
a-=3 //a=a-3
a*=3
a/=3
a%=3
七、单目操作符:++、--、+、-
1. 单目操作符:操作数为1个
2. ++、--
(1)前置++:先+后使用 ++a
(2)后置++:先使用后+ a++
先把a的值赋给b,再自增
先将a的值打印出来,再自增
(3)前置--:先-后使用
(4)后置--:先使用后+ a++
3. +、-:正号、负号
八、强制类型转换
1.语法
(类型)
2.
九、printf()、scanf()
1.printf()
(1)占位符
(2)限定宽度
- 不满5位,会给他添满5位
- %5d(采用右对齐)
- %-5d(采用左对齐)
- %12f
%f默认打印小数点后6位
小数点前再补齐5个空格,小数点算1位, 加起来12位
(3)限定小数位数
%.2f(只保留小数点后两位)
(4)限定输出部分字符串
%.2s(只输出开头的两个字符)
2.scanf()
(1)变量前必须加上&运算符(指针变量除外)。
scanf传递的不是值,是地址
(2)处理数据时,会自动过滤掉空白字符
包括空格、制表符、换行符等
(3)scanf()的返回值
scanf() 的返回值是⼀个整数,表示成功读取的变量个数。 如果没有读取任何项,或者匹配失败,则返回 0 。
如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量 EOF。
(4)测试多组数据
(5)占位符
%c
上面所有占位符之中,除了 %c 以外,都会自动忽略起首的空白字符。%c不忽略空⽩字符,总是返回当前第⼀个字符,⽆论该字符是否为空格
%s
不会包含空白字符,读取从第一个非空白字符开始读取,读到空白字符就停止读取
(6)输入的格式要与预定的格式相同
(7)赋值忽略符:*
将占位符后面加上一个*号
%*c :只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。