1 / 68

2.1 C 语言的数据类型 C 语言的数据类型归纳示意图。 图 2-1 C 语言的数据类型

第 2 章 基本数据类型与运算 2.1 C 语言的数据类型 2.2 常量与变量 2.3 基本数据类型 2.4 常用数学库函数 2.5 基本运算与表达式 2.6 混合运算时数据类型的转换 本章小结. 2.1 C 语言的数据类型 C 语言的数据类型归纳示意图。 图 2-1 C 语言的数据类型.

callia
Download Presentation

2.1 C 语言的数据类型 C 语言的数据类型归纳示意图。 图 2-1 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. 第2章 基本数据类型与运算2.1 C语言的数据类型2.2 常量与变量2.3 基本数据类型2.4 常用数学库函数2.5 基本运算与表达式2.6 混合运算时数据类型的转换本章小结

  2. 2.1 C语言的数据类型C语言的数据类型归纳示意图。 图2-1 C语言的数据类型

  3. 2.2 常量与变量2.2.1 常量在程序运行过程中,其值不能改变的数据对象称为常量(Constants)。常量按其值的表示形式区分它的类型。在程序中除使用上述字面形式的常量外,还可用标识符表示一个常量,称为符号常量。注意符号常量是一个常量,不能当变量使用。

  4. 2.2.2 变量1.变量的概念在高级语言中,变量(Variables)可以看作是一个特定的内存存储区,该存储区由一定字节的内存单元组成,并可以通过变量的名字来访问。

  5. C语言中的变量具有3个属性:变量名、变量值和变量地址。变量名只不过是内存地址的名称,所以对变量的操作,等同于对变量所在地址的内存操作。反过来,对指定内存地址的内存单元操作,等同对相应变量的操作。C语言中的变量具有3个属性:变量名、变量值和变量地址。变量名只不过是内存地址的名称,所以对变量的操作,等同于对变量所在地址的内存操作。反过来,对指定内存地址的内存单元操作,等同对相应变量的操作。

  6. 不同的变量具有不同的数据类型,变量的数据类型决定了变量占用连续的多少个字节内存单元。变量必须先定义,才能使用,否则就找不到相应的变量,编译系统将给出变量未定义的错误信息(Undeclared Identifier)。

  7. 2.标识符C语言的标识符(Identifier)主要用来表示常量、变量、函数和类型等的名字,是只起标识作用的一类符号,标识符由下划线或英文字母构成,它包括3类:关键字、预定义标识符和用户自定义标识符。2.标识符C语言的标识符(Identifier)主要用来表示常量、变量、函数和类型等的名字,是只起标识作用的一类符号,标识符由下划线或英文字母构成,它包括3类:关键字、预定义标识符和用户自定义标识符。

  8. (1)关键字所谓关键字,就是C语言中事先定义的,具有特定含义的标识符,有时又叫保留字。关键字不允许另作它用,否则编译时会出现语法错误。C语言的关键字都用小写英文字母表示,ANSI标准定义共有32个关键字。(1)关键字所谓关键字,就是C语言中事先定义的,具有特定含义的标识符,有时又叫保留字。关键字不允许另作它用,否则编译时会出现语法错误。C语言的关键字都用小写英文字母表示,ANSI标准定义共有32个关键字。

  9. (2)预定义标识符除了上述关键字外,还有一类具有特殊含义的标识符,它们被用作库函数名和预编译命令,这类标识符在C语言中称为预定义标识符。从语法上讲,C语言允许把预定义标识符另作它用(如作为用户自定义标识符),但这样将使这些标识符失去原来的含义,容易引起误会,因此一般不要把预定义标识符再另作它用。(2)预定义标识符除了上述关键字外,还有一类具有特殊含义的标识符,它们被用作库函数名和预编译命令,这类标识符在C语言中称为预定义标识符。从语法上讲,C语言允许把预定义标识符另作它用(如作为用户自定义标识符),但这样将使这些标识符失去原来的含义,容易引起误会,因此一般不要把预定义标识符再另作它用。

  10. (3)用户自定义标识符用户自定义标识符是程序员根据自己的需要定义的一类标识符,用于标识变量、常量、数组、用户自定义函数、类型和文件等程序成分对象。这类标识符主要由英文字母、数字和下划线“_”构成,但开头字符一定是字母或下划线。在C语言的标识符中,同一字母的大小写被当作不同字符。标识符中不能有汉字,但是字符串和注释中可以有汉字。(3)用户自定义标识符用户自定义标识符是程序员根据自己的需要定义的一类标识符,用于标识变量、常量、数组、用户自定义函数、类型和文件等程序成分对象。这类标识符主要由英文字母、数字和下划线“_”构成,但开头字符一定是字母或下划线。在C语言的标识符中,同一字母的大小写被当作不同字符。标识符中不能有汉字,但是字符串和注释中可以有汉字。

  11. C语言没有限制一个标识符的长度(字符个数),但不同的C语言编译系统有不同的规定。在C语言程序中,标识符用作程序成分对象的名字,在给程序成分对象命名时,一般提倡使用能反映该对象意义的标识符。C语言没有限制一个标识符的长度(字符个数),但不同的C语言编译系统有不同的规定。在C语言程序中,标识符用作程序成分对象的名字,在给程序成分对象命名时,一般提倡使用能反映该对象意义的标识符。

  12. 3.变量的定义C语言规定,一个C程序中用到的任何变量都必须在使用前定义。定义变量时,一是定义变量的数据类型,二是定义变量的名称,三是说明变量的存储类别。在一个程序中,一个变量只能属于一个类型。定义变量的一般格式为:[存储类别] 类型符 变量名表;其中类型符是类型关键字,表示变量的数据类型;变量名表中可含多个变量名,其间用逗号隔开;存储类别分为寄存器变量(register)、自动变量(auto)、全局变量和静态变量(static),具体意义将在第6章中讨论。

  13. 4.变量的初始化变量的初始化,就是在定义变量的同时赋予其与类型相一致的初值。注意:变量若未进行初始化,则应该在程序中通过赋值语句或输入语句进行赋值后再使用,否则它们的值有可能是不确定的。如果引用了该变量,则编译时提示下面的警告信息。local variable '××' used without having been initialized

  14. 2.3 基本数据类型2.3.1 整型数据1.整型数据的分类C语言将整型数据分成3种:基本整型、短整型和长整型。其中,基本整型的类型符用int标记;短整型的类型符用short int标记,简写为short;长整型的类型符用long int标记,简写为long。

  15. 根据这3种整型数据在计算机内部表示的最高位是当作符号位还是数值位,又可分别分成带符号整数和无符号整数两类。以上给出的3种类型符标记带符号的整型数据。若分别在它们之前冠以unsigned,即unsigned int、unsigned short、unsigned long,就标记无符号基本整型、无符号短整型和无符号长整型。无符号整型表示一个整数的存储单元中的全部二进制位都用作存放数本身,而没有符号位。

  16. C语言本身未规定以上各类整型数据应占的字节数,只要求long型数据的字节数不少于int型数据的字节数,short型数据的字节数不多于int型数据的字节数。具体如何实现,由各编译系统自行决定。在Turbo C 2.0中,int型和short型数据都是2个字节,long型数据是4个字。而Visual C++ 6.0则给short型数据分配2个字节,int和long型数据都是4字节。各种数据类型所占的二进制位数不同,可以用sizeof运算符测试所用环境下的各种数据类型所占的字节数。sizeof的操作数可以是类型名、变量名和表达式,结果代表操作数所占的字节数。

  17. 2.整型常量的表示形式C语言的整型常量有3种表示形式:(1)十进制整数。如120、0、-374等。(2)八进制整数。八进制整数是以数字0开头并由数字0~7组成的数字序列。如0127表示一个八进制整数,其值等于十进制数87。(3)十六进制整数。十六进制整数是以0x(或0X)开头,后接0~9和A、B、C、D、E、F(或用小写字母)等字符的整数。例如0x127表示一个十六进制整数,其值等于十进制数295。0xabc也表示一个十六进制整数,其值等于十进制数2 748。

  18. 整型常量也有相应的类型之分。一个整型常量之后加一个字母L(或l),则指明该常量是long型的,例如0L、2652L等。这种表示方法多数用于函数调用中,如果函数的形参为long型,则要求实参也为long型,此时,若以整型常量作实参,可在整型常量后接L,以确保提供long型实参。一个整型常量之后加字母U(或u),则指明该常量是unsigned型的,例如10U、539U等。在整型常量之后同时加上字母U和L,则指明该常量是unsigned long型的,例如84UL、935UL等。

  19. 3.整数在计算机内部的表示方法为了区分正整数和负整数,通常约定一个数的最高位(最左边的一位)为符号位,如果符号位为0,则表示正整数,符号位为1,表示负整数。在此约定下,有两种常用方法可以表示一个整数,它们分别是原码表示法和补码表示法。3.整数在计算机内部的表示方法为了区分正整数和负整数,通常约定一个数的最高位(最左边的一位)为符号位,如果符号位为0,则表示正整数,符号位为1,表示负整数。在此约定下,有两种常用方法可以表示一个整数,它们分别是原码表示法和补码表示法。

  20. 一个整数的原码的最高位是这个数的符号位,其余位是这个数绝对值的二进制形式。一个正整数的补码与它的原码相同,一个负整数的补码则是把它的原码的各位(符号位除外)求反,即0变成1,1变成0,然后在末位加1。对于无符号数,将该数转化为二进制数,并考虑数据类型的长度即可。一个整数的原码的最高位是这个数的符号位,其余位是这个数绝对值的二进制形式。一个正整数的补码与它的原码相同,一个负整数的补码则是把它的原码的各位(符号位除外)求反,即0变成1,1变成0,然后在末位加1。对于无符号数,将该数转化为二进制数,并考虑数据类型的长度即可。

  21. 2.3.2 实型数据1.实型数据的分类C语言的实型数据分为单精度、双精度和长双精度实型,分别用float、double和long double标记,其中长双精度实型是ANSI C新增加的。计算机只能表示有限位的实数,C语言中的实型数据是实数的有限子集。在大多数C系统中,一个float型数据在内存中占用4个字节,一个double型数据占用8个字节,long double型数据占用16个字节。

  22. 2.实型常量的表示形式在C语言中,实型常量有两种表示形式:(1)十进制小数形式。它由数字和小数点组成。如3.23、34.0、0.0等。(2)指数形式。用字母e(或E)表示以10为底的指数,e之前为数字部分,之后为指数部分,且两部分必须同时出现,指数必须为整数。如45e-4、9.34e2等是合法的实型常量,分别代表45×10-4、9.34×102,而e4、3.4e4.5、34e等是非法的实型常量。2.实型常量的表示形式在C语言中,实型常量有两种表示形式:(1)十进制小数形式。它由数字和小数点组成。如3.23、34.0、0.0等。(2)指数形式。用字母e(或E)表示以10为底的指数,e之前为数字部分,之后为指数部分,且两部分必须同时出现,指数必须为整数。如45e-4、9.34e2等是合法的实型常量,分别代表45×10-4、9.34×102,而e4、3.4e4.5、34e等是非法的实型常量。

  23. 3.实型数据在计算中的误差问题计算机中表示数据的位数总是有限的,因此能表示数据的有效数字也是有限的,而在实际应用中数据的有效位数并无限制,这种矛盾,势必带来计算机计算时数据有截断误差。【例2.1】实型数据的截断误差分析。3.实型数据在计算中的误差问题计算机中表示数据的位数总是有限的,因此能表示数据的有效数字也是有限的,而在实际应用中数据的有效位数并无限制,这种矛盾,势必带来计算机计算时数据有截断误差。【例2.1】实型数据的截断误差分析。

  24. 当把一个浮点型常量赋给整型变量或字符型变量时,需取整后再赋值,所以也会产生误差。例如:int k;k=12.12345;在编译时,编译系统会给出警告信息:conversion from 'const double ' to 'int ', possible loss of data

  25. 2.3.3 字符型数据字符型数据的类型符为char。在C语言中,字符型数据由一个字符组成,在计算机内部的表示是该字符的ASCII码(二进制形式)。1.字符型常量字符型常量是用单引号括起来的一个字符。如‘a’、‘A’、‘4’、‘+’、‘?’等都是合法的字符型常量。

  26. 注意:在C语言中,表示字符型常量要注意以下几点:(1)字符型常量只能用单引号括起来,不能用双引号或其他括号。(2)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中的任意字符,但数字被定义为字符型之后就不再是原来的数值了。例如,‘5’和5是不同的量,‘5’是字符型常量,而5是整型常量。同样,‘0’和0是不相等的。注意:在C语言中,表示字符型常量要注意以下几点:(1)字符型常量只能用单引号括起来,不能用双引号或其他括号。(2)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中的任意字符,但数字被定义为字符型之后就不再是原来的数值了。例如,‘5’和5是不同的量,‘5’是字符型常量,而5是整型常量。同样,‘0’和0是不相等的。

  27. 2.转义字符除了以上形式的字符型常量外,C语言还允许用一种特殊形式的字符常量,即转义字符。转义字符以反斜杠“\”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。转义字符主要用来表示那些用一般字符不便于表示的控制代码。2.转义字符除了以上形式的字符型常量外,C语言还允许用一种特殊形式的字符常量,即转义字符。转义字符以反斜杠“\”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。转义字符主要用来表示那些用一般字符不便于表示的控制代码。

  28. 注意:字符“\b”、“\n”、“\r”和“\t”等用于输出时的确切意义。“\b”表示往回退一格。“\n”表示以后的输出从下一行开始。“\r”表示对当前行作重叠输出(只回车,不换行)。字符“\t”是制表符,其作用是使当前输出位置横向跳格至一个输出区的第一列。系统一般设定每个输出区占8列(设定值可以改变),这样,各输出区的起始位置依次为1、9、17、…各列。如当前输出位置在1至8列任一位置上,则遇“\t”都使当前输出位置移到第9列上。注意:字符“\b”、“\n”、“\r”和“\t”等用于输出时的确切意义。“\b”表示往回退一格。“\n”表示以后的输出从下一行开始。“\r”表示对当前行作重叠输出(只回车,不换行)。字符“\t”是制表符,其作用是使当前输出位置横向跳格至一个输出区的第一列。系统一般设定每个输出区占8列(设定值可以改变),这样,各输出区的起始位置依次为1、9、17、…各列。如当前输出位置在1至8列任一位置上,则遇“\t”都使当前输出位置移到第9列上。

  29. 【例2.2】控制输出格式的转义字符的用法。广义地讲,C语言字符集(包括英文字母、数字、下划线以及其他一些符号)中的任何一个字符均可用转义字符来表示。\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制表示的ASCII码。如‘\101’表示ASCII码为八进制数101的字符,即为字母A。与此类似,‘\134’表示反斜杠“\”,‘\x0A’表示换行即‘\n’,‘\x7’表示响铃等。【例2.2】控制输出格式的转义字符的用法。广义地讲,C语言字符集(包括英文字母、数字、下划线以及其他一些符号)中的任何一个字符均可用转义字符来表示。\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制表示的ASCII码。如‘\101’表示ASCII码为八进制数101的字符,即为字母A。与此类似,‘\134’表示反斜杠“\”,‘\x0A’表示换行即‘\n’,‘\x7’表示响铃等。

  30. 3.字符型数据和整型数据的相互通用在C语言中,字符型数据和整型数据之间可以相互通用,对字符数据也能进行算术运算,这给字符处理带来很大的灵活性。一个字符型数据可以以字符格式输出(格式说明用“%c”),显示字符本身,也可以以整数形式输出(格式说明用“%d”),显示字符的ASCII码值。【例2.3】字符型数据与整型数据相互通用示例。3.字符型数据和整型数据的相互通用在C语言中,字符型数据和整型数据之间可以相互通用,对字符数据也能进行算术运算,这给字符处理带来很大的灵活性。一个字符型数据可以以字符格式输出(格式说明用“%c”),显示字符本身,也可以以整数形式输出(格式说明用“%d”),显示字符的ASCII码值。【例2.3】字符型数据与整型数据相互通用示例。

  31. 4.字符串常量C语言除了允许使用字符常量外,还允许使用字符串常量。字符串常量是用双引号括起来的字符序列。例如,“a”、“123.45”、“Central South University”、“中部崛起”等都是字符串常量。

  32. 注意:不要将字符型常量与字符串常量混为一谈。‘a’是字符型常量,而“a”是字符串常量,两者有本质的区别。设有定义:char c;则语句c=‘a’;是正确的,而c=“a”;是错误的。不能把一个字符串常量赋给一个字符型变量。C编译系统自动在每一个字符串常量的末尾加一个字符串结束标志,系统据此判断字符串是否结束。字符串结束标志是一个ASCII码值为0的字符,即“\0”。从ASCII码表中可以看到ASCII码为0的字符是空操作字符,它不引起任何控制动作,也不是一个可显示的字符。如果有一个字符串“CHINA”,则它在内存中占6个字节,最后一个字符为‘\0’,但在输出时不输出,所以字符串“CHINA”有效的字符个数是5。

  33. 在C语言中没有专门的字符串变量,字符串如果需要存放在变量中,需要用字符数组,即用一个字符数组来存放一个字符串,这将在第7章中介绍。在C语言中没有专门的字符串变量,字符串如果需要存放在变量中,需要用字符数组,即用一个字符数组来存放一个字符串,这将在第7章中介绍。

  34. 2.4 常用数学库函数调用库函数应注意以下几点。(1)应用数学库函数时,必须包含库函数的头文件:#include <math.h>或#include “math.h”。(2)函数一般带有一个或多个自变量,在程序设计中称为参数。调用函数时,需要给这些参数提供值,函数对这些参数加以处理后,返回一个计算结果,称为函数值。函数的一般调用格式为:函数名([参数表])其中有些函数也可以没有参数。调用库函数时,参数类型、个数、顺序应与函数定义时的要求一致。

  35. (3)三角函数的参数为弧度,如果输入的是角度值,则必须转换为弧度后求其三角函数值。例如求30°的正弦值的表达式为:sin(3.141592*30/180)。(4)ceil()和 floor()是两个用于取整的函数,ceil()求不小于x的最小整数,而floor()求不大于x的最大整数,函数返回的结果是一个双精度数据。例如,ceil(3.14)、ceil(-3.14)、floor(3.14)、floor(-3.14)的值分别为4、-3、3、-4。

  36. (5)rand()函数产生1~32 767之间的随机整数,它在文件stdlib.h中定义。在程序的开头添加命令#include <stdlib.h>或#include “stdlib.h”,就可以在程序中使用该函数。调用rand()函数之前,使用srand()函数可产生不相同的随机数数列。利用rand()函数构造合适的表达式可以产生任意区间的随机整数。

  37. 2.5 基本运算与表达式2.5.1 C的运算与表达式简介表达式(Expression)是将运算量用运算符连接起来组成的式子,其中的运算量可以是常量、变量或函数。由于运算量可以为不同的数据类型,每一种数据类型都规定了自己特有的运算或操作,这就形成了对应于不同数据类型的运算符集合。C语言提供了很多数据类型,运算符也相当丰富,共有14类,如表2-4所示。

  38. 在学习运算符时应注意以下几点:(1)运算符的功能。有些运算符的含义和数学中的含义一致,如加、减、乘、除等。有些运算符则是C语言中特有的,如++、--等。在学习运算符时应注意以下几点:(1)运算符的功能。有些运算符的含义和数学中的含义一致,如加、减、乘、除等。有些运算符则是C语言中特有的,如++、--等。

  39. (2)对运算量的要求。一是对运算量个数的要求。例如,有的运算符要求有两个运算量参加运算(如+、-、*、/),称为双目(或双元)运算符;而有的运算符(如负号运算符、地址运算符&)只允许有一个运算量,称为单目(或一元)运算符。二是对运算量类型的要求。如+、-、*、/的运算对象可以是整型或实型数据,而求余运算符%要求参加运算的两个运算量都必须为整型数据。(2)对运算量的要求。一是对运算量个数的要求。例如,有的运算符要求有两个运算量参加运算(如+、-、*、/),称为双目(或双元)运算符;而有的运算符(如负号运算符、地址运算符&)只允许有一个运算量,称为单目(或一元)运算符。二是对运算量类型的要求。如+、-、*、/的运算对象可以是整型或实型数据,而求余运算符%要求参加运算的两个运算量都必须为整型数据。

  40. (3)运算的优先级。如果不同的运算符同时出现在表达式中时,先执行优先级高的运算。例如,乘除运算优先于加减运算。(3)运算的优先级。如果不同的运算符同时出现在表达式中时,先执行优先级高的运算。例如,乘除运算优先于加减运算。

  41. (4)结合方向,即结合性。在一个表达式中,有的是按从左到右的顺序运算,有的是按从右到左的顺序运算。如果在一个运算量的两侧有两个相同优先级的运算符,则按结合性处理。在C语言中,并非都采取自左至右的结合方向,有些运算符的结合方向是“自右至左”的,即“右结合性”。附录B列出了所有运算符的优先级和结合性。(4)结合方向,即结合性。在一个表达式中,有的是按从左到右的顺序运算,有的是按从右到左的顺序运算。如果在一个运算量的两侧有两个相同优先级的运算符,则按结合性处理。在C语言中,并非都采取自左至右的结合方向,有些运算符的结合方向是“自右至左”的,即“右结合性”。附录B列出了所有运算符的优先级和结合性。

  42. (5)注意所得结果的类型,即表达式值的类型,尤其当两个不同类型数据进行运算时,特别要注意结果值的类型。(5)注意所得结果的类型,即表达式值的类型,尤其当两个不同类型数据进行运算时,特别要注意结果值的类型。

  43. 2.5.2 算术运算1.基本的算术运算基本的算术运算符有:+(加)、-(减)、*(乘)、/(除)、%(求余)、+(取正)、-(取负)其中+、-和*三种运算符与平常使用的习惯完全一致,这里不再赘述。下面着重介绍其余各种运算符。

  44. 除法运算要特别注意:两个整数相除结果为整数,如7/4的结果为1。在书写表达式时,要注意防止由于两个整数相除而丢掉小数部分,使运算误差过大,如5*4/2与5/2*4在数学上是等价的,但在C语言中其值是不相等的,前者结果是10,后者结果是8。但有时利用两个整数相除又能达到自动取整的效果,如设m、n均为整型变量(n≠0),则m-m/n*n可得到m除以n的余数。如果除数与被除数异号,则舍入的方向是因系统而异的。如-7/4在有的系统中结果为-1,而有的系统可能为-2。除法运算要特别注意:两个整数相除结果为整数,如7/4的结果为1。在书写表达式时,要注意防止由于两个整数相除而丢掉小数部分,使运算误差过大,如5*4/2与5/2*4在数学上是等价的,但在C语言中其值是不相等的,前者结果是10,后者结果是8。但有时利用两个整数相除又能达到自动取整的效果,如设m、n均为整型变量(n≠0),则m-m/n*n可得到m除以n的余数。如果除数与被除数异号,则舍入的方向是因系统而异的。如-7/4在有的系统中结果为-1,而有的系统可能为-2。

  45. 求余运算符要求参与运算的两个运算量均为整型数据,其结果为两个数相除的余数,如5%3的值为2。一般情况下,求余运算所得结果与被除数的符号相同。如-5%3的值为-2,而5%-3的值为2。求余运算符要求参与运算的两个运算量均为整型数据,其结果为两个数相除的余数,如5%3的值为2。一般情况下,求余运算所得结果与被除数的符号相同。如-5%3的值为-2,而5%-3的值为2。

  46. 加、减、乘、除和求余运算都是双目运算符,它们的结合性都是从左至右。取正和取负这两个运算符是单目运算符,它们的结合性从右至左,优先级高于+、-、*、/、%等双目运算符。加、减、乘、除和求余运算都是双目运算符,它们的结合性都是从左至右。取正和取负这两个运算符是单目运算符,它们的结合性从右至左,优先级高于+、-、*、/、%等双目运算符。

  47. 书写C语言表达式应遵循以下规则:(1)表达式中所有的字符必须写在同一水平线上,每个字符占一格。(2)表达式中常量的表示、变量的命名以及函数的调用要符合C语言的规定。(3)要根据运算符的优先顺序,合理地加括号,以保证运算顺序的正确性。特别是分式中的分子分母有加减运算时,或分母有乘法运算,要加括号表示分子分母的起始范围。例如,利用rand()函数产生[a,b]区间的随机正整数的表达式为:rand()%(b-a+1)+a例如,rand()%90+10产生[10,99]区间的随机正整数。书写C语言表达式应遵循以下规则:(1)表达式中所有的字符必须写在同一水平线上,每个字符占一格。(2)表达式中常量的表示、变量的命名以及函数的调用要符合C语言的规定。(3)要根据运算符的优先顺序,合理地加括号,以保证运算顺序的正确性。特别是分式中的分子分母有加减运算时,或分母有乘法运算,要加括号表示分子分母的起始范围。例如,利用rand()函数产生[a,b]区间的随机正整数的表达式为:rand()%(b-a+1)+a例如,rand()%90+10产生[10,99]区间的随机正整数。

  48. 2.自增、自减运算自增(++)和自减(--)运算符,是C语言所特有的,使用频率很高。按它们出现在运算量之前或之后,分为两种不同情况。(1)前缀++:++变量。前缀++使变量的值加1,并以增加后的值作为运算结果。这里限制变量的数据类型为整型或某种指针类型。2.自增、自减运算自增(++)和自减(--)运算符,是C语言所特有的,使用频率很高。按它们出现在运算量之前或之后,分为两种不同情况。(1)前缀++:++变量。前缀++使变量的值加1,并以增加后的值作为运算结果。这里限制变量的数据类型为整型或某种指针类型。

  49. (2)前缀--:与前缀++相似,不同的只是前缀--使运算对象的值减1。(3)后缀++:变量++。后缀++作用于变量时,运算结果是该变量原来的值,在确定结果之后,使变量的值加1。前缀++和后缀++都能使变量的值增加1,但是它们所代表的表达式的值却不相同。(2)前缀--:与前缀++相似,不同的只是前缀--使运算对象的值减1。(3)后缀++:变量++。后缀++作用于变量时,运算结果是该变量原来的值,在确定结果之后,使变量的值加1。前缀++和后缀++都能使变量的值增加1,但是它们所代表的表达式的值却不相同。

  50. (4)后缀--:变量--。后缀--作用于变量,以该变量的值为结果,即先取变量的值,然后使变量的值减1。后缀--与前缀--的区别类似于后缀++与前缀++的区别。使用自增和自减运算符时,其运算量仅适用于变量,不能是常量或表达式。(4)后缀--:变量--。后缀--作用于变量,以该变量的值为结果,即先取变量的值,然后使变量的值减1。后缀--与前缀--的区别类似于后缀++与前缀++的区别。使用自增和自减运算符时,其运算量仅适用于变量,不能是常量或表达式。

More Related