栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

第二章:数据类型,运算符和表达式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第二章:数据类型,运算符和表达式

1:引例

 

例1.1

  #include
它是编译预处理命令,程序中调用了print()函数,在系统文件static,h(称为头文件)中声明,在程序开始处要使用include将该文件包含进来。

注意:

C语言有效的预处理命令总是以#开始的,预处理命令的末尾不加分号。

int main(void)
它是本程序中的“主函数”,在一个C程序中有且仅有一个main()函数,程序运行时,会首先从main()函数开始执行。该行的关键字int说明main()函数的返回值是整型数,括号中的void表示main()函数不需要参数、
一对大括号将函数的所有语句括起来,构成了函数体

printf("Programming is fun.“);
它由函数调用和分号两部分组成。printf(“Programming is fun.”)调用了标准输出函数,将引号中的内容原样输出到屏幕上(C语言的默认输出设备为屏幕),语句末尾的分号表示该语句结束。

注意:

C语言中除复合语句外的所有语句都必须以分号结束

return 0;
它结束main()函数的运行,并向系统返回一个整数0,作为程序的结束状态,如果返回0.说明程序运行正常,返回其他值则表示不同的错误情况。系统根据返回值判断程序是否运行成功。

如果需要在两行上输出文字:

语句print("Programming is fun.n”)中的n是换行符,即在输出“Programming isfun.“后换行。ln称为转义字符

 例1.2

定义了一个符号常量PI,这样程序中凡是需要使用3,14159的地方,都用PI代替,提高了程序的可读性
 main()函数前面的void表示该函数无返回值。第一个%f的位置上输出变量v的值,在第二个位置上输出变量f的值
程序中调用print f()函数输出结果时,将引号内除%f以外的内容原样输出

 2.C语言的数据类型

 (1)基本类型还可以分解为其他类型,主要为整型、字符型和浮点型。
(2)构造类型是根据已定义的一个或多个数据类型,用构造的方法来定义的。可以理解为,一个构造类型的值由若干个“成员”或“分量”构成。每个“成员”都是一个基本类型或一个构造类型。
C语言中构造类型包括:数组类型、结构体类型、共用体类型和枚举类型。
(3)指针是C语言中一种特殊的,同时又具有重要作用的数据类型。
在本章中,首先介绍基本类型中的整型、实型和字符型。其余类型在以后各章中陆续介绍。

3.c语言的常量

常量是在程序执行中,其值不发生改变的量,分为直接常量和符号常量两种

3.1直接常量

直接靠量又分为整型常量、实型常量、字符型常量和 字符串常量

1.整型常量

整型常量即整数,包括正整数、负整数和零。C语言中,整型常量可以用十进制、八进制和十六进制表示。
十进制表示:由数字0~9,正、负号组成;
八进制表示:以0(数字0)为前缀,其后由数字0~7组成,;八进制数一般是无符号数。
十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写均可)组成;
注意:
(1)在一个整型常量后面加一个字母u或U,认为是unsigned into型,如246U.
(2)在一个整型常量后面加一个字母l或L,认为是long int型,如12L。

2.实型常量

实型常量即实数,又称为浮点数,C语言中,实数只能用十进制形式表示,实数的表示方法有两种,小数形式和指数形式

(1)小数形式

由整数部分、小数点和小数部分组成,当整数部分或者小数部分为0时,可以省略不写,但是小数点不可省略。如12. 345,3.,一. 123等均为正确的实数。

(2)指数形式

由尾数部分、字母E或e和指数部分组成,格式为:土尾数E指数。

注意:
(1)以小数形式表示实数时,必须有小数点,并且小数点的前、后至少一边要有数字。
(2)以指数形式表示实数时,字母E(或e)的前后必须有数字,并且指数部分只能是整数。如12.-E3、1.5E、E6都是不正确的实数。

在C语言中,实型常量默认为是double型的实数,如果在数的后面加字母f或F(如1.65f、654.87F),则认为是float型的实数。

3.字符型常量

字符常量指单个字符.用一对单引号及其括号所括起的字符来表示。( 和、
和′a′、′B′、'=′都是合法的字符常量。

在C语言中、字符常量有以下特点:

(1)字符常量只能用单引号括起来.不能用双引号或其它括号。

 (2)字符常量只能是单个字符,不能是字符串

(3)字符可以是ASCH字符集中的任意字符。按ASCII码的大小,不同的字符之间存在着次序,以字符的ASCl1码值按升序连续排列。如小写字母的ASCl1码大于大写字母的ASCI1码,大写字母的ASCI1码大于数字字符的ASCII码。

转义字符转义功能ASCII码值
空字符0
a响铃7
b退格(Backspace)8
t水平制表符(即横向跳格)9
n回车换行(Enter)10
v竖向跳格11

f

换页12
r回车13

"

双引号(”)34
'单引号(’)39
?问好(?)63
\反斜线字符()92
ddd1~3位八进制所代表的字符
xhh1~2位十六进制所代表的字符

说明:

转义字符形式上由多个字符组成,但它是一个字符常量 ,只代表一个字符。转义字符的使用方法与一般字符常量的用法相同。

4.字符串常量

字符串常量是由一对双引号""括起来的零个或多个字符序列
字符串中可以使用空格字符、转义字符和其他字符,也可以使用汉字等文字符号。
字符串中还可以使用空字符
字符串常量在内存中占用一段连续的存储单元,系统自动在每个字符串的尾部加 ''
作为字符串的结束标志,因此,n个字符组成的字符串,在内存中要占用n+1个字节空间。

注意:
字符常量和字符串常量在内存中的存储情况是不同的,如6 在内存中占1个字节,存储的是其ASCH码,而“6”在内存中占2个字节,一个字节存储'6',另一个字节存储‘0'。可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量,在C译言中,由于没有提供字符串类型的变量,字符串一般用字符数组来解决

3.2符号常量

在C语言中,可以用一个标识符来表示一个常量,称为符号常量。符号常量在使用前必须定义,其一般形式为:

                               #define  标识符  常量值

其中#define是一条编译处理命令,称为宏义命令,其功能是把该标识符定义为其后的常量值,该标识符称为符号常量。一个#define命令只能定义一个符号常量,若要定义多个符号常量, 需要使用多个#define命令。

符号常量的好处:

(1)增加程序的可读性 :通过标识符就知道该常量的意思

(2)提高程序的可维持性:通过符号常量使得修改常量很方便,只需要在常量的定义处修改即可

(3)简化程序代码:通过符号常量可以简化表达式的复杂输入

(4)方便数组的定义:可以将整型符号作为数组的长度

4.C语言的变量 4.1变量的定义与使用

在C语言中,所有的变量必须先定义再使用

变量的定义

其定义格式

                                   类型说明符  变量名表;

(1)类型说明符必须是C语言中的有效数据类型,如int,float,double,char等 ,用于指定变量的类型,该类型决定了编译时分配给变量的内存单元的多少

(2)变量名表可以由一个或多个变量名组成,各变量名之间用“,”分隔。变量名必须是合法的C语言标识符,变量名一般使用小写字母

(3)变量的定义必须放在变量使用之前,一般在函数体开头部分进行定义

变量的初始化

C语言允许在定义变量的同时对变量赋值,这个过程称为变量的初始化

变量初始化时需注意:

(1)对一个变量赋值之后,该值被储存在分配给变量的内存空间中

(2)不允许对多个未定义的同类型变量连续初始化

(3)初始化时,一般使“=”右边表达式的数据类型和“=”左边的变量的类型一致,如果不一致,系统会进行自动赋值转换

(4)没有进行初始化的变量,其值是由定义时所使用的储存类型决定的。全局变量和static型变量的值是0或'',其它储存类型的局部变量的值是未知的

4.2整型变量

一个整型变量用来保存整数。在C语言中,整型又可分为:短整型(short int)、整整(into)、长整型(long into)、无符号整型(unsigned into)、无符号短整型(unsigned short into)和无符号长整型(unsigned long int)六种
C标准没有规定各类整型数据所占内存的字节数,只要求短整型不长于整型,长整型看短于整型。某种类型的数据所占内存的大小随编译系统的不同而有差异
各种整型的关键字及占用内存字节数和取值范围如表


 

关键字类型占用字节数取值范围
short int短整型2-32768~32768(-2^15~2^15_1)
int整型4-2147483648~2147483647(-2^31~2^31-1)
long int长整型4-2147483648~2147483648(-2^31~2^31-1)
unsigned short无符号短整型20~65535(0~2^16-1)
unsigned int无符号整型40~4294967295(0~2^32-1)
unsigned long无符号长整型40~4294967295(0~2^32-1)

说明:

(1)各种无符号整数所占的字节数与相应的有符号整数相同。但由于省去了符号位,故不能表示负数

(2)有符号整数以二进制补码形式储存。最左边第一位表示符号,该位为0,表示正数,该位为1,表示负数

(3)无符号整数以二进制原码形式储存

 

 由表2可知短整型变量的取值范围是-32768~32767,变量a的值加1以后超出该范围,产生意想不到的结果

4.3实型变量

C语言中实型变量分单精度(fioat型)和双精度(double型)两类。各种实型的关键字及占用字节数和取值范围如表

                                 实型数据关键字,字节数和取值范围

关键字类型占用字节数取值范围
float单精度型43.4E-38~3.4E+38
double双精度型81.7E-308~1.7E+308

 4.4字符型变量

字符型变量的值是字符常量,即用单引号引用起来的单个字符。字符型变量的类型说明符是char

 

 5.运算符和表达式

C语言中运算符和表达式数量之多,在其他高级语言中很少见的。正是丰富的运算符和表达式使C语言功能十分完善,这也是C语言的特点之一

5.1赋值运算符与赋值表达式

C语言中赋值运算符有“=”,“+=”,“-=”,“*=”,“/=”和“%=”等。用赋值运算符将运算对象连接而成的表达式称为赋值表达式。

1.简单赋值运算符

最简单的赋值运算符就是“=”,它的作用是将一个数值赋给一个变量, 也可以将一个表达式的赋给一个变量

2.复合赋值运算符

在简单赋值运算符前面加上算术运算符就构成符合赋值运算符如表

                                    复合算术赋值运算符

运算符应用举例等价形式
+=a+=xa=a+(x)
-+a-=xa=a-(x)
*=a*=xa=a*(x)
/=a/=xa=a/(x)
%=a%=/a=a%(x)

3.赋值表达式

在C语言中 ,赋值语句属于表达式语句。赋值表达式是由赋值运算符将一个变量和一个表达式连接起来的式子所组成。

             一般形式:变量=表达式

由于赋值表达式的作用是将一个表达式的值赋给一个变量,因此赋值表达式具有计算和赋值的双重功能。需要注意:赋值运算符的左侧必须是一个变量。

赋值表达式的执行过程:

(1)计算赋值运算符右侧表达式的值。

(2)将所计算出的值赋给赋值运算符左侧的变量。

区分赋值表达式和赋值语句的方法:

赋值表达式的末尾没有分号,而赋值语句的末尾必须有分号,在一个表达式中可以包含一个或多个赋值表达式,但绝对不能包含赋值语句

注意:

(1)如果“=”左右两边类型不同,系统会按照赋值类型转换的原则将右边的类型转换成左边的类型。

(2)赋值表达式的右边也可以是一个复制表达式

5.2算数运算符与算数表达式 1.基本的算数运算符

                                   基本算数运算符

运算符+-*/%
名称求余

(1)+加法运算符,为双目运算符,其功能是进行求和运算
(2)-减法运算符,为单目运算符,功能是取负运算
(3)*乘法运算符,为双目运算符,功能是进行求乘积运算
(4)/除法运算符,为双目运算符,功能是进行求商运算
(5)%求余运算符,为双目运算符,功能是进行求余数的运算

2.自曾,自减运算符

C语言有两个特殊运算符“++”和“--”

(1)++自增运算符,为单目运算符,其功能是使变量的值自加1,自增速滑冰自强使用形式:
①前缀方式:用于变量前面,它是“先计算,后使用”的
②后缀方式:用于变量后面,它是“先使用,后计算
(2)--自减运算符,为单目运算符,功能是使变量的值自减1,使用方法和自增减算符相似

3.算数运算符的优先级和结合性

(1)单目运算符是右结合的,双目算术运算符是左结合。

(2)“++,--,-”>“*,/,%”>“+,-”,即单目运算符的优先级高于双目运算符,双目算术运算符中*,/,%的优先级高于+,-。

在优先级相同的情况下,按规定的“结合性”进行处理

4.算数表达式

(1)算术表达式是由算术运算符,运算对象和括号连接起来的式子,运算对象可以是常量,变量和函数。

(2)通常数学表达式均可写成C语言的算术表达式,但也有些数学表达式无法直接用C语言的算术表达式写出,此时需要调用C语言中的数学函数来实现。

(3)表达式计算以后会得到一个确定的值和类型,其类型由所使用的具体运算符和运算对象决定。

注意:
(1)表达式中的乘号不能省略,且表达式中的所有字符均应写在同一行上

(2)在表达式中还可以使用多层圆括号

 5.3逗号运算符与逗号表达式

C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式

一般形式:表达式1,表达式2,...,表达式n

(1)逗号表达式的执行顺序是:从左到右依次计算每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。

(2)逗号运算符是双目运算符,其优先级最低,是左结合的。

(3)并非所有出现逗号的地方都为逗号表达式,如在变量说明语句中,以及函数参数表中逗号只是用作各变量之间的分隔符

 5.4求字节数运算符

运算符sizeof用于计算数据类型所占的字节数,它是一个单目运算符,优先级高于双目运算符。

一般格式:

(1)sizeof(表达式)或sizeof 表达式

(2)sizeof(数据类型名)

 6数据类型转换

C语言规定,各种不同数据类型的数据在一起运算时,不同类型的数据要先转换成相同类型的数据才可以进行运算,数据类型的转换可以分为自动转换和强制转换

6.1自动类型转换

不同数据在一起运算时,编译系统会自动进行转换

转换规则:把占用空间少的(低级)类型向占用空间多的(高级)类型转换以保证精度

 6.2强制类型转换

强制类型转换是采用强制类型转换运算符将某种数据类型强制转换成指定数据类型

一般形式:(类型说明符)(表达式)

功能:把表达式的运算结果强制转换成类型说明符指定的类型

 强制类型转换需注意:

(1)需强制转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转

(2)强制类型转换是一种不安全的转换,如果是从高级类型换成低级类型,会损失数据的精度

(3)强制类型转换并不改变表达式中变量的类型和只

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号