C程序设计(第五版) 第三章 知识总结 2

由于第三章知识内容杂多,将分为几部分整理

二、关于混合运算 不同类型之间转换 运算优先级 p54

1.C运算符

算术运算符 (+ - * / % ++ --
关系运算符 (> < == >= <= !=
逻辑运算符 (! && ||
位运算符 (<< >> ~ | ^ &
赋值运算符 (=及其扩展赋值运算符
条件运算符 (?:
逗号运算符 (,
指针运算符 (*和&
求字节数运算符 (sizeof
强制类型转换运算符 ((类型)
成员运算符 (. ->
下标运算符 ([]
其他 (如函数调用运算符())

2.基本算数运算符 详见P52常用算术运算符表

(1)两个实数相除结果是双精度实数,两个整数相除结果是整数。如:5/3结果值为1,舍去小数部分。如果除数或被除数有一个为负值,舍入方向不一定,VC++中采取“向零取整”的方法。-5/3=-1
(2)%运算符要求参加运算对象为整数,结果也是整数。除%之外的运算符操作数都可是任何算数类型。

3.自增(++)自减(--)运算符

自增和自减运算符的作用是使变量的值增加1或减1
++i,--i //表示在使用i之前,先使i的值加(减)1
i++,--i //表示在使用i之后,使i的值增(减)1
++i 是先执行i=i+1,再使用i的值;i++是先使用i的值,再执行i=i+1

分析

 #include <stdio.h>;
 int main(){
     int a = 12,b = 1;
     int c = a - (b--); // ①
     int d = (++a) - (--b); // ②
     printf("c=%d, d=%d\n", c, d);
     return 0;
 }

输出结果:c=11, d=14
执行步骤:1) 执行语句①时,因为是后自减,会先进行a-b运算,结果是 11,然后 b 再自减,就变成了 0;最后再将a-b的结果(也就是11)交给 c,所以 c 的值是 11。
2) 执行语句②之前,b 的值已经变成 0。对于d=(++a)-(--b),a 会先自增,变成 13,然后 b 再自减,变成 -1,最后再计算13-(-1),结果是 14,交给 d,所以 d 最终是 14。

4.算数表达式和运算符优先级与结合性

用算术运算符和括号将运算对象(操作数)连接起来、符合C语法规则的式子成为C算数表达式

C语言规定了运算符优先级和运算符的结合性

算数运算符的结合方向都是“自左至右”又称为“左结合性”。有些运算符的结合方向为“自右至左”,即“右结合性”(例如赋值运算符,a=b=c,按从右到左的顺序,c先赋值给b,b再赋值给a)。”结合性“的概念其他一些高级语言中是没有的。详细优先级和结合性见附录C
初等运算符优先级最高,逗号运算符优先级最低

逗号运算符:

将两个表达式用逗号连起来称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2

逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,“3+5,6+8”的值为14。

又如,逗号表达式 a=35,a4 赋值运算符的优先级别高于逗号运算符, 因此应先求解a=35(也就是把“a=35”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。

分析

(a=3*5,a*4),a+5

结果为20 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。

5.不同类型数据间的混合运算 P54

如果一个运算符两侧的数据类型不同,则先自动进行类型转换,使二者为同一类型,再进行运算。
(1)+、-、*、/运算的两个数中有一个数为float或double型,结果是double型,因为float转换为double型进行运算。
(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换成double型,然后进行运算。
(3)字符型数据和整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如果字符型数据和实型数据进行运算,将字符的ASCII码转换为double型数据运算。

6.强制类型转换运算符

可用强制类型转换运算符将一个表达式转换成所需类型。如:(int) (x+y)
形式为:(类型名)(表达式)
注意:在强制类型转换时,得到一个所需类型的中间数据(临时值),而原来变量的类型未发生变化
存在两种类型转换:1.系统自动进行的类型转换 2.强制类型转换

三、C程序作用和分类(结构) p56大图(解释见P9)

在第一章已具体解释。详细见第一章:C语言的程序结构。
一个函数包含声明部分执行部分。
一个C程序由若干个源程序文件组成,一个源文件可以由若干个函数预处理指令以及全局变量声明部分组成。

(1)9种控制语句

if()...else...(条件语句)
for()...(循环语句)
while()... (循环结构)
do...while(循环结构)
continue (结束本次循环语句)
break (中止执行switch或循环语句)
switch (多分支选择语句)
return (从函数返回语句)
goto (转向语句,结构化程序中基本不用goto)
()表示括号中是一个“判别条件”,“..."表示内嵌的语句

(2)函数调用语句

函数调用语句由一个函数调用加一个分号构成。
printf("this is a test.");

(3)表达式语句

表达式语句由一个表达式加一个分号构成。
注:一个表达式的最后加一个分号就成了一个语句。语句最后必须有一个分号!分号是语句中不可缺少的组成部分,而不是两个语句间的分隔符号
赋值表达式:a=1
赋值语句:a=1;

(4)空语句

;
一个分号也是一个语句。

(5)复合语句

可以用{ }把一些语句和声明括起来成为复合语句(语句块)

完整文档:https://www.jianguoyun.com/p/De9rgJUQvuOmCRjB6ZAE
引用请注明出处:http://www.sgyh.xyz/archives/70.html

TAG:none

发表新评论