温州如何进行网站推广,电商卖货平台有哪些,营销软文范例,wordpress商品展示主题本章介绍以下内容#xff1a; 关键字#xff1a;while、typedef 运算符#xff1a;、-、*、/、%、、--、(类型名) C语言的各种运算符#xff0c;包括用于普通数学运算的运算符 运算符优先级以及语句、表达式的含义 while循环 复合语句、自动类型转换和强制类型转换 如何编写…本章介绍以下内容 关键字while、typedef 运算符、-、*、/、%、、--、(类型名) C语言的各种运算符包括用于普通数学运算的运算符 运算符优先级以及语句、表达式的含义 while循环 复合语句、自动类型转换和强制类型转换 如何编写带有参数的函数 现在读者已经熟悉了如何表示数据接下来我们学习如何处理数据。C 语言为处理数据提供了大量的操作可以在程序中进行算术运算、比较值的大小、修改变量、逻辑地组合关系等。我们先从基本的算术运算加、减、乘、除开始。 组织程序是处理数据的另一个方面让程序按正确的顺序执行各个步骤。C 有许多语言特性帮助你完成组织程序的任务。循环就是其中一个特性本章中你将窥其大概。循环能重复执行行为让程序更有趣、更强大。
5.1 循环简介
5.2 基本运算
5.2.1 赋值运算符
用于储存值的数据存储区域统称为数据对象data object
左值lvalue是 C 语言的术语用于标识特定数据对象的名称或表达式
可修改的左值modifiable lvalue用于标识可修改的对象。
右值rvalue指的是能赋值给可修改左值的量且本身不是左值
5.2.2 加法运算符
5.2.3 减法运算符-
和-运算符都被称为二元运算符binary operator即这些运算符需要两个运算对象才能完成操作
5.2.4 符号运算符-和
以这种方式使用的负号被称为一元运算符unary operator。一元运算符只需要一个运算对象
5.2.5 乘法运算符*
5.2.6 除法运算符/
浮点数除法的结果是浮点数而整数除法的结果是整数。整数是没有小数部分的数。这使得5除以3很让人头痛因为实际结果有小数部分。在C语言中整数除法结果的小数部分被丢弃这一过程被称为截断truncation
整数除法会截断计算结果的小数部分丢弃整个小数部分不会四舍五入结果。混合整数和浮点数计算的结果是浮点数
5.2.7 运算符优先级 表5.1 运算符优先级从低至高
5.2.8 优先级和求级顺序
5.3 其他运算符
5.3.1 sizeof运算符和size_f类型
sizeof运算符以字节为单位返回运算对象的大小
C 语言规定sizeof 返回 size_t 类型的值。这是一个无符号整数类型但它不是新类型。前面介绍过size_t是语言定义的标准类型
C99 做了进一步调整新增了%zd 转换说明用于 printf()显示 size_t 类型的值。如果系统不支持%zd可使用%u或%lu代替%zd。
5.3.2 求模运算符%
求模运算符只能用于整数不能用于浮点数
5.3.3 递增运算符
a_post a; // 后缀使用a的值乊后递增a b_pre b; // 前缀使用b的值乊前递增b
5.3.4 递减运算符--
5.3.5 优先级
5.3.6 不要自作聪明
5.4 表达式和语句
5.4.1 表达式
表达式expression由运算符和运算对象组成
每个表达式都有一个值
5.4.2 语句
语句statement是C程序的基本构建块。一条语句相当于一条完整的计算机指令。在C中大部分语句都以分号结尾
最简单的语句是空语句 ; //空语句
副作用是对数据对象或文件的修改
序列点sequence point是程序执行的点在该点上所有的副作用都在进入下一步之前发生
5.4.3 复合语句块
复合语句compound statement是用花括号括起来的一条或多条语句复合语句也称为块block
缩进对编译器不起作用
缩进是为了让读者一眼就可以看出程序是如何组织的
总结 表达式和语句 表达式 表达式由运算符和运算对象组成。最简单的表达式是不带运算符的一个常量或变量如22 或beebop。更复杂的例子是55 22和vap 2 * (vip (vup 4))。 语句 到目前为止读者接触到的语句可分为简单语句和复合语句。简单语句以一个分号结尾。如下所示 赋值表达式语句: toes 12; 函数表达式语句: printf(%d\n, toes); 空语句: ; /* 什么也不做 */ 复合语句或块由花括号括起来的一条或多条语句组成。如下面的while语句所示 while (years 100) { wisdom wisdom * 1.05; printf(%d %d\n, years, wisdom); years years 1; }
5.5 类型转换
1.当类型转换出现在表达式时无论是unsigned还是signed的char和short都会被自动转换成int如有必要会被转换成unsigned int如果short与int的大小相同unsigned short就比int大。这种情况下unsigned short会被转换成unsigned int。在KR那时的C中float会被自动转换成double目前的C不是这样。由于都是从较小类型转换为较大类型所以这些转换被称为升级promotion。 2.涉及两种类型的运算两个值会被分别转换成两种类型的更高级别。 3.类型的级别从高至低依次是long double、double、float、unsigned long long、long long、unsigned long、long、unsigned int、int。例外的情况是当 long 和 int 的大小相同时unsigned int比long的级别高。之所以short和char类型没有列出是因为它们已经被升级到int或unsigned int。 4.在赋值表达式语句中计算的最终结果会被转换成被赋值变量的类型。这个过程可能导致类型升级或降级demotion。所谓降级是指把一种类型转换成更低级别的类型。 5.当作为函数参数传递时char和short被转换成intfloat被转换成double。第9章将介绍函数原型会覆盖自动升级。
如果把一个浮点值转换成整数类型会怎样当浮点类型被降级为整数类型时原来的浮点值会被截断
强制类型转换cast即在某个量的前面放置用圆括号括起来的类型名该类型名即是希望转换成的目标类型。圆括号和它括起来的类型名构成了强制类型转换运算符cast operator其通用形式是 (type) 用实际需要的类型如long替换type即可。
总结 C的一些运算符 下面是我们学过的一些运算符。 赋值运算符 将其右侧的值赋给左侧的变量 算术运算符 将其左侧的值与右侧的值相加 - 将其左侧的值减去右侧的值 - 作为一元运算符改变其右侧值的符号 * 将其左侧的值乘以右侧的值 / 将其左侧的值除以右侧的值如果两数都是整数计算结果将被截断 % 当其左侧的值除以右侧的值时取其余数只能应用于整数 对其右侧的值加1前缀模式或对其左侧的值加1后缀模式 -- 对其右侧的值减1前缀模式或对其左侧的值减1后缀模式 其他运算符 sizeof 获得其右侧运算对象的大小以字节为单位运算对象可以是一个被圆括号括起来的类型说明符如sizeof(float)或者是一个具体的变量名、数组名等如sizeof foo (类型名) 强制类型转换运算符将其右侧的值转换成圆括号中指定的类型如(float)9把整数9转换成浮点数9.0
5.6 带参数的函数
5.7 示例程序
5.8 关键概念
5.9 本章小结
C 语言有许多运算符如本章讨论的赋值运算符和算术运算符。一般而言运算符需要一个或多个运算对象才能完成运算生成一个值。只需要一个运算对象的运算符如负号和 sizeof称为一元运算符需要两个运算对象的运算符如加法运算符和乘法运算符称为二元运算符。 表达式由运算符和运算对象组成。在C语言中每个表达式都有一个值包括赋值表达式和比较表达式。运算符优先级规则决定了表达式中各项的求值顺序。当两个运算符共享一个运算对象时先进行优先级高的运算。如果运算符的优先级相等由结合律从左往右或从右往左决定求值顺序。 大部分语句都以分号结尾。最常用的语句是表达式语句。用花括号括起来的一条或多条语句构成了复合语句或称为块。while语句是一种迭代语句只要测试条件为真就重复执行循环体中的语句。 在C语言中许多类型转换都是自动进行的。当char和short类型出现在表达式里或作为函数的参数函数原型除外时都会被升级为int类型float类型在函数参数中时会被升级为double类型。在KR C不是ANSI C下表达式中的float也会被升级为double类型。当把一种类型的值赋给另一种类型的变量时值将被转换成与变量的类型相同。当把较大类型转换成较小类型时如long转换成short或 double 转换成 float可能会丢失数据。根据本章介绍的规则在混合类型的运算中较小类型会被转换成较大类型。 定义带一个参数的函数时便在函数定义中声明了一个变量或称为形式参数。然后在函数调用中传入的值会被赋给这个变量。这样在函数中就可以使用该值了。