1063 字
5 分钟
C notes
C notes
变量、数据类型和算术表达式
使用变量
- 变量命名规则:字母或下划线+字母、下划线或数字 注:
- 不允许使用$
- 不允许使用空格
- 数字不能作为变量名的开头
- 不允许使用保留字
数据类型与常量(四种基本类型:float、double、char、_Bool)
- %f若未指定,只显示6位数字
- %g不显示浮点数后面多余的0,若小数点后没有位数,将省略小数点
int
- %o输出八进制数(该方法不显示前面的0,若要显示使用%#o)
- %x输出十六进制数(该方法不显示前面的0x,若要显示使用%#o,若要输出大写字母则使用%X)
float double
- 浮点类型格式化输出符号为%f
- 合法的浮点数常量,例如:“3.”、“125.8”、“-.001”、“1.7e4”(即为1.7*10-4,分割尾数和指数的字母e,大小写都合法)
- 使用科学计数法显示浮点数 使用格式化输出符号%e %g(printf函数自行决定,若指数小于-4或者大于5,将使用科学计数法)
- double与float类型存储浮点数 double精度为float的两倍
char
- 格式化输出符号为%c
- char可以储存单个字符,例如’a’,‘6’,’;‘
_Bool
- _Bool只能存储0或1
- 主要用于判断
类型修饰符:long, long long, short, unsigned, signed
使用算数表达式
整数算术和单目减法操作符
- 两个整数之间进行除法操作得到的结果一定是个整数
- 整型变量程序效率较高
- 单目操作符:只需要一个操作数的操作符(双目操作符亦然)
余数操作符
- 两边的运算量必须为整型,且%后面的运算量不能为0。
整型数与浮点数之间的转换
- 将浮点数赋给整型数,浮点数的小数部分将被舍弃
- 将整型变量赋给浮点数不会丢失精度 如果两个操作数有一个是浮点数,将被视作浮点运算
类型转换操作符
(int)29.55+(int)21.99
- 实际上相当于29+21(相当于临时将该两变量看作整型)
- 临时转换规则同上
结合运算和赋值:运算赋值操作符
- 该方法可简化程序
- 该写法可读性较好
C 中的运算符(操作符)优先级
类别 | 运算符 | 结合性 |
---|---|---|
后缀 | () [] -> . ++ - - | 从左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
位与 AND | & | 从左到右 |
位异或 XOR | ^ | 从左到右 |
位或 OR | | | 从左到右 |
逻辑与 AND | && | 从左到右 |
逻辑或 OR | || | 从左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |
类型_Complex和_Imaginary
- 用于处理复数和虚数的数据类型
循环
for语句
- 一般形式:for(初始表达式;循环条件;循环表达式)程序代码 不要在for语句括号后面放置分号,这样会立即结束循环
关系操作符
操作符 | 用途 | 示例 |
---|---|---|
== | 相等 | count == 10 |
!= | 不等 | flag! = DONE |
< | 小于 | a < b |
<= | 小于或等于 | low <= higt |
> | 大于 | pointer > end_of_list |
>= | 大于或等于 | j >= 0 |
关系操作符优先级低于算术操作符
对齐输出
- 如%2f(格式化输出符号,前面加上一个输出宽度限定数(若某个数输出宽度大于宽度限定数,将忽略该限定符))
程序输入
例子 scanf("%d",&x);
请求用户输入一个整数,并将其存放于x变量中
嵌套的for循环
for循环的变体
多个表达式
例子: for(int i=0, j=0; i<10; ++i)
for(i=0, j=100; i<10; ++i, j=j-10)
省略某些表达式
例子: for(;j!=100; ++j)
声明变量
注意:for循环中声明的变量为局部变量
while循环
while语句的两种形式
while(表达式)
语句
while(循环条件){
程序代码
循环表达式;
}
do语句
形式
do
程序语句
while(循环表达式);
注:先执行程序语句,再对循环表达式求值
break语句
停止当前层级的循环
continue语句
该语句之后的所有语句将被跳过