C 语言仅有 32 个关键字, 9 种控制语句, 34 种运算符
数据类型关键字 (12 个)
(1) char: 声明字符型变量或函数
(2) double: 声明双精度变量或函数
(3) enum: 声明美剧类型
(4) float: 声明浮点型变量或函数
(5) int: 声明整型变量或函数
(6) long: 声明长整型变量或函数
(7) short: 声明短整型变量或函数
(8) signed: 声明有符号类型变量或函数
(9) struct: 声明结构体变量或函数
(10) union: 声明联合数据类型
(11) unsigned: 声明无符号类型变量或函数
(12) void: 声明函数无返回值或无参数, 声明无类型指针
控制语句关键字 (12 个)
循环语句
(1) for: 一种循环语句
(2) do: 循环语句的循环体
(3) while: 循环语句的循环条件
(4) break: 跳出当前循环
(5) continue: 结束当前循环, 开始下一轮循环
条件语句
(1) if: 条件语句
(2) else: 条件语句否定分支
(3) goto: 无条件跳转语句
开关语句
(1) switch: 用于开关语句
(2) case: 开关语句分支
(3) default: 开关语句中的 "其他" 分支
返回语句
(1)return: 子程序返回语句
存储类型关键字 (4 个)
(1) auto: 声明自动变量 一般不使用
(2) extern: 声明变量是在其他文件正声明 (也可以看做是引用变量)
(3) register: 声明寄存器变量
(4) static: 声明静态变量
其他关键字 (4 个)
(1) const: 声明只读变量
(2) sizeof: 计算数据类型长度
(3) typedef: 用于给数据类型取别名
(4) volatile: 说明变量在程序执行中可被隐含的改变
9 种控制语句
goto 语句: 无条件转向;
if 语句: 判断语句;
while 循环语句;
do-while 语句: 先执行循环体, 然后判断循环条件是否成立. 之后继续循环;
for 语句: 循环, 可替代 while 语句; 只是用法不同;
break 语句跳出本层的循环;(只跳出包含此语句的循环)
continue 语句: 继续 (一般放到循环语句里, 不在执行它下面的语句, 直接跳到判断语句例: for 语句, 就直接跳到第二个分号处, while 语句, 就直接跳到 while() 的括号里;
switch 语句: 多相选择;
return 语句: 返回;
34 种运算符
一, 算术运算
C 语言一共有 34 种运算符, 包括常见的加减乘除运算.
1. 加法:+ 还可以表示正号
2. 减法:- 还可以表示负号
3. 乘法:* 非数学意义上的 X
4. 除法:/ 注意 1/2 的值为 0 而非 0.5
5. 取余 (模运算): 两个整数相除之后的余数 (注意两边都必须是整数, 带符号只和左值有关)
注意点:
- Int a=10.8;// 数据精度丢失警告. 结果为 10-- 自动类型转换
- Int a=(int)10.8;// 无警告. 把 10.8 强制转换为整型 -- 强制类型转换
- Double c=10.6+6// 结果为 16.600000. 在计算机中, 拿两个数值进行运算, 则运算符两边的数值需要类型相同, 如果不同则进行自动类型提升. 即把 6 转为 6.000000 后再参与运算.
4. 参与运算的两个数是什么类型, 那么其结果就是什么类型. int a=10/3 结果为 3,double b=10/3 结果为 3.000000;double c=10.0/3 结果为 3.333333. 要求精确值可以进行强制类型转换. double d=(double)3/2 把 3 转换为 double 类型变为 3.000000, 之后 2 进行自动类型提升转变为 2.000000 参与运算, 结果为 1.500000. 也可以写成 3/(double)2. 这种情况需要注意与对整体进行强制转换的区别 double e=(double)(3/2) 是先计算 3/2 的值为 1 再对 1 进行强制类型转换, 结果为 1.000000.
二, 赋值运算
(一) 简单赋值
Int a=10+5;a=b=10;// 从右向左, 左边不能为常量
(二) 复合赋值
- a=a+5;=>a+=5;
- a=a*5;=>a*=5;
- a+=5*6+4;=>a=a+(5*6+4)
提示: 预算顺序取决于两点: 一是运算符的优先级, 二是结合的顺序.
三, 自增自减运算
Int a=10;
把 a 的值加 1 有四种方法:
- a=a+1;
- a+=1;
- a++;
- ++a;
简单区分 a++ 和 ++a.
- Int b;
- Int a=10;
- b=++a; //a==11,b==11;a 先把值加 1 为 11, 再赋值给 b
- b=a++; //a==11,b==10;a 先把值 10 复制给 b,a 自己再加 1 为 11
- b=(a++)+(++a); //a1==10,a2==12,b==22
- b=(++a)+(a++); //a1==11,a2==11,b==22
注意: int d=10++;// 这种写法是错误的, 因为对常量进行自加和自减没有任何意义.
四, Sizeof
作用: 用来计算变量, 常量或者是一种数据类型所占的内存字节数.
基本形式: sizeof(变量名 | 常量 | 数据类型), 完成之后返回一个值.
1. Sizeof 变量 | 常量
- Sizeof (变量 | 常量)
- Sizeof (数据类型)
注意: 数据类型一定要用括号括起来, 不能写成 sizeof 数据类型这样的形式.
五, 关系运算符
(一) 条件判断
默认情况下. 在程序中写出的每一句正确的代码都会被执行, 但很多时候我们需要在某个条件成立的情形下才执行某一段代码, 如登录操作, 这种情况可以使用条件语句来完成.
(二) 真假
在 C 语言中, 条件成立称为 "真", 条件不成立称为 "假".
C 语言规定, 任何数值都有真假性, 任何非零值都为真, 只有 0 才为假, 无布尔类型.
(三) 关系比较
关系运算的结果只有两种情况, 如果条件成立就为真, 值为 1, 如果条件不成立就为假, 值为 0. 有 6 种运算符, 分别是:(1)<(2)<= (3)> (4)>= (5)== (6)!=
(四) 使用注意
1. == 和!= 优先级相等, 其他四个关系运算符的优先级相等, 且前者的优先级低于后者. 如 2==3>1 应该先计算 3>1
2. 关系运算符中, 若优先级相同, 则 "从左往右" 结合. 如 4>3<2, 先计算 4>3
3. 关系运算符中的优先级小于算术运算符. 如 3+4>8-2 相当于 (3+4)> (8-2)
4. 练习 5!=4+2*7>3==10 先计算 5!=18>3==10,5!=1==10,1==10, 假
六, 逻辑运算符
逻辑运算的结果只有两个: 真 (0) 和假 (1)
1. 与 && 条件 1&& 条件 2 只有的那个条件 1 和条件 2 都成立时, 才为真否则为假.
2. 或 || 条件 1 || 条件 2 当条件 1 或条件 2 中有一个成立时就为真, 都不成立时为假.
3. 非 ! ! 条件 取反
注意: 逻辑运算符在进行运算时, 只要能够确定整体的真假性, 后面的条件就不再进行而是直接忽略.
- Int a=b=10;
- Int c=(a>5)&&(++b>=11);// 此时 a==10,b==11,c==1
- Int c=(a<5)&&(++b>=11);// 此时 a==10,b==10,c==0
提示: 在进行逻辑运算时, 如果搞不清楚各个符号的优先级, 可以使用 ().
七, 三目运算符
双目: 需要两个值参与运算
单目: 1 个数值参与运算 如! 5
三目: 需要 3 个数值参与
格式: 条件? 数值 1: 数值 2
先判断? 前的条件, 若条件成立则返回数值 1, 若条件不成立则返回条件 2.
要求比较 a 和 b 的值, 把数值大的存入到 c 中 c=a>b?a:b
比较 a,b,c 三个数的值, 把最大的值存入到 d 中
- Int abmax=(a>b)?a:b;
- d=abmax>c:abmax:c;
来源: http://www.bubuko.com/infodetail-2839900.html