1 / 31

C 语言程序设计

C 语言程序设计. 视频课程. 讲师:成少雷. 概述. 一 、左值和右值. 三 、算术运算. 二 、运算符概述. 四 、表达式. 一切皆运算. 理解 C 语言中运算. 运算符 的运算规则就是我们接下来要学习和掌握的。. #include < stdio.h > int main(void) { int x = 23, y = 34; int z = x + y; printf (“C 篮子中的苹果数量为 %d n“,z ); system(“PAUSE”); return 0; }.

anakin
Télécharger la présentation

C 语言程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C语言程序设计 视频课程 讲师:成少雷

  2. 概述 一、左值和右值 三、算术运算 二、运算符概述 四、表达式

  3. 一切皆运算

  4. 理解C语言中运算 • 运算符的运算规则就是我们接下来要学习和掌握的。 #include <stdio.h> int main(void) { int x = 23, y = 34; int z = x + y; printf(“C篮子中的苹果数量为%d\n“,z); system(“PAUSE”); return 0; }

  5. C语言的运算 表达式 操作数 运算符 23 + 34 加数 算式 加号

  6. 左值和右值 • 有些运算符对操作数有特殊要求,比如说赋值运算符和自增,自减运算符要求操作数必须是左值的。 • 左值最初来源于赋值表达式E1=E2,E1在赋值表达式左边,称其为左值,但左值本质上代表的是一个内存空间,l是指locator,可定位的。 • 跟左值相对的是右值,右值是表达式的值。

  7. 左值右值 • 可以作为左值的表达式形式有:变量名、e[k]、(e)、e.name、e->name、*e。 • 有些运算符要求某个操作数必须为左值,这样的运算符有: • &:操作数应为左值或函数名。 • ++、--:操作数应为左值。 • =、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=:左操作数应为左值。

  8. 概述 一、左值和右值 三、算术运算 二、运算符概述 四、表达式

  9. C语言中的运算符(operator) • C语言运算符可分为以下几类: • 算术运算符 + - * / % ++ -- • 关系运算符 > < == >= <= != • 逻辑运算符 ! && || • 位运算符 << >> ~ | ^ & • 赋值运算符 = += -= *= /= %= >>= <<= &= ^= |= • 条件运算符 ?: • 逗号运算符 , • 指针运算符 * & • 求字节数运算符 sizeof • 特殊运算符 (type) . -> [] ()

  10. 运算符的优先级和结合性(Ⅰ)

  11. 运算符的优先级和结合性( Ⅱ)

  12. 运算符的优先级和结合性(Ⅲ) • 优先级(precedence) • 不同优先级的运算符,运算次序按优先级由高到低执行 • 可以使用括号改变运算符的优先次序 • 结合性(Associativity) • 同一优先级的运算符,运算次序按结合方向的规定执行 • 例: • 设有intx,y;请分析语句y = x * 5 + 4;执行后,y的值是多少? • 设有int x = 2,y = 3;请分析y = x = 6;执行后y的值是多少?

  13. 概述 一、左值和右值 三、算术运算 二、运算符概述 四、表达式

  14. 算术运算符 • 基本算术运算符 • 加(+)、减(-)、乘(*)、除(/)、模运算(%)、负号(-) • 自增、自减运算符 • ++ • --

  15. 基本算数运算符 • 注意: • 两个整数相除的结果为商,舍去小数部分。 • 对于%来说,两个操作数必须为整数

  16. 基本算数运算符 • 除法和模运算运算规律 • 注意: • 模运算结果的正负取决于左操作数 • 实数求模可以使用函数fmod -7 / 2 = -3 15 / -4 = -3 5.0 / 2 = 2.5 5 % 3 = 2 -5 % 2 = -1 5 % -2 = 1

  17. 常用的标准数学函数 • #include <math.h>

  18. 挑毛病 ? #include <stdio.h> #include <math.h> int main() { double a,b,c,p; double triangleArea; printf("请输入三角形三边的长度:"); scanf("%lf%lf%lf",&a,&b,&c);  p = 1 / 2 * (a + b +c); triangleArea = sqrt(p*(p - a)*(p - b)*(p - c)); /*输出结果*/ printf("三角形的面积 = %f\n",triangleArea);  return 0; } 程序运行结果: 改为:1.0/2 (1/2.0)

  19. 课堂练习 • 请编写一个程序,任意输入5位整数,将这个5位数倒序输出。例输入的12345,则输出54321。 • 提示:整除和模运算 #include <stdio.h> #include <stdlib.h> int main(void) { int num; printf("请输入一个5位整数:"); scanf("%d",&num); printf(“%d”,num%10); );//输出个位 printf(“%d”,num%100/10); );//输出十位 printf(“%d”,num%1000/100); );//输出百位 printf(“%d”,num%10000/1000); );//输出千位 printf("%d\n",num / 10000);//输出万位 system("pause"); return 0; }

  20. 算数运算符—自增自减运算符 • 自增运算符(++):一元运算符,操作形式有两种: • ++操作数操作数提供计算值前,先使其值自动加1 • 操作数++操作数提供计算值后,再使其值自动加1 • 自减运算符(--):一元运算符,操作形式有两种: • --操作数操作数提供计算值前,先使其值自动减1 • 操作数--操作数提供计算值后,再使其值自动减1 例设有int x = 3, y;,请分析语句y = ++x;执行后,x、y 的值? 例设有int x = 3, y = 4, z;,请分析语句z = x++ + y;执行后,x、y、z 的值? 例设有int x = 3, y = 4, z;,请分析语句z = x++ + --y;执行后,x、y、z 的值?

  21. 自增自减运算符 • 小结 • 自增、自减运算符操作数必须是左值。 • 自增、自减运算是C语言特有的,常用于循环语句中,控制变量自增或自减。 • 在表达式中,连续使用同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。

  22. 运算符的副作用 • 求代码结果。 /*源文件:demo4_4.c*/ #include <stdio.h> #include <stdlib.h> int main(void) { intx = 3; inta; a = (++x)+(++x)+(++x); printf("a = %d", a); system("PAUSE"); return 0; } /*源文件:demo4_5.c*/ #include <stdio.h> #include <stdlib.h> int main(void) { intx = 3; inta; ++x; ++x; ++x; a = x + x + x; printf("a = %d\n", a); system("PAUSE"); return 0; }

  23. 副作用和序列点 • 副作用 一般运算符是不改变操作数的值,如果运算符改变操作数的值,我们称值为副作用。 • 求值点 该点前的表达式的所有副作用,在程序执行到达该点之前发生完毕;该点后的表达式的所有副作用,在程序执行到该点时尚未发生。序列点出现的位置: • 完整表达式结束时 • &&、||、?:或逗号运算符的第一个操作数之后 • 函数调用中求值参数和函数表达式之后

  24. 副作用和序列点 • 注意: • 尽量不要利用表达式的副作用. • 尽量引入中间变量,避开副作用歧义. • 尽量不要出现晦涩难懂,也不知道系统将怎样执行的代码.

  25. 概述 一、左值和右值 三、算术运算 二、运算符概述 四、表达式

  26. 表达式 • 表达式 • 由一系列操作数和运算符结合构成的符合C语言运算规则的式子,叫表达式。 • 操作数包括常量、变量、函数调用 • 表达式构成的基本规则: • 单个的常量、变量、函数调用就是表达式 例31, x , printf()等 • 用()括起来的表达式是基本表达式。 • 运算符和表达式结合起来,可以构成新的表达式 例 x + 3 , -x

  27. 表达式(cont) • 表达式的值 • 表达式经过运算最后所得的值称为表达式的值。 • 计算表达式的值必须考虑运算符的优先级和结合性 • 表达式的类型 • 一个表达式的类型,取决于这个表达式最后进行的是什么运算(或者说取决于表达式中优先级最低运算符) 。 • 算术表达式 • 赋值表达式 • 关系表达式 • 逻辑表达式 • 逗号表达式 • …….

  28. 算数表达式 • C语言算数表达式和数学公式基本上遵循相同的运算规律,但也有一些细微的差别: • 不允许使用方括号和花括号,只能使用小括号; • 只能使用系统允许的符号,象平方、正弦、余弦等计算必须调用相应的库函数; • 乘号不能省略; • 不允许有分子分母形式 • 表达式是直线型的; a b

  29. 练习 • 用C语言编写数学公式 • 数学式 b2-4ac • 数学式 πR2 • 数学式 [(a+b)2-(c-d)2] / (a – b)2 • 数学式 a + b + c + d + e 5

  30. 小结 1 2 3 3 4 4 5 左值和右值的基本概念 运算符的优先级和结合性 基本算术运算符 自增自减运算符 表达式的基本概念

  31. THANKS!

More Related