基本数据类型运算符与表达式Word格式.docx
- 文档编号:4230053
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:25
- 大小:35.63KB
基本数据类型运算符与表达式Word格式.docx
《基本数据类型运算符与表达式Word格式.docx》由会员分享,可在线阅读,更多相关《基本数据类型运算符与表达式Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
intx;
unsignedy;
longz;
x=1000;
y=50000U;
/*y的值为无符号整型数*/
z=800000L;
/*z的值为长整型数*/
printf("
%d,%u,%ld\n"
,x,y,z);
【运行结果】
1000,50000,800000
【知识拓展】
整型类型细化可分为基本整型,短整型,长整型,整型数据还可以分为有符号数和无符号数。
整型数据分为整型常量与整型变量。
本案例中列举了常见的三种整型类型:
基本整型(int),无符号整型(unsigned),长整型(long)。
1.整型常量的表示方法
整型常量就是整常数。
在C语言中,使用的整常数有八进制、十六进制和十进制三种。
(1)十进制整常数:
十进制整常数没有前缀,其数码为0~9。
(2)八进制整常数:
八进制整常数必须以0开头,即以0作为八进制数的前缀。
数码取值为0~7。
八进制数通常是无符号数。
(3)十六进制整常数:
十六进制整常数的前缀为0X或0x。
其数码取值为0~9,A~F或a~f。
整型常数的后缀:
长整型数是用后缀“L”或“l”来表示的。
(1)十进制长整常数:
158L(十进制为158)、80000L(十进制为800000);
(2)八进制长整常数:
012L(十进制为10)、077L(十进制为63)、0200000L(十进制为65536);
(3)十六进制长整常数:
0X15L(十进制为21)、0XA5L(十进制为165)、0X10000L(十进制为65536)。
无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。
例如,5000u,358u,0x38Au,235Lu均为无符号数。
前缀、后缀可同时使用以表示各种类型的数,如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。
2.整型变量
(1)整型变量的分类:
整型变量的分类及其表示的数据范围如表2-1所示(VisualC++环境)。
表2-1整型变量的分类及范围
类型名称
占用的字节数
数值范围
[signed]int
4
-2147483648~2147483647
[signed]short[int]
2
-32768~32767
[signed]long[int]
unsigned[int]
0~4294967295
unsignedshort[int]
0~65535
unsignedlong[int]
0~4294967258
(2)整型变量的定义。
变量定义的一般形式为:
类型说明符变量名标识符,变量名标识符,…;
intx;
(x为整型变量)
unsignedy;
(y为无符号整型变量)
longz,w,m;
(z,w,m为长整型变量)
在书写变量定义时,应注意以下几点:
①允许在一个类型说明符后,定义多个相同类型的变量。
各变量名之间用逗号间隔。
类型说明符与变量名之间至少用一个空格间隔。
②最后一个变量名之后必须以“;
”号结尾。
③变量定义必须放在变量使用之前。
一般放在函数体的开头部分。
案例中出现了“/*“和”*/“符号,这是C语言的注释语句。
注释用来向用户提示或解释程序的意义。
程序编译时不对注释作任何处理,但必要的注释是程序的重要组成部分。
注释可出现在程序中的任何位置。
在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理,待调试结束后再去掉注释符。
“/”和“*”之间不要有空格,也不允许嵌套定义注释,因为当出现了第一个/*,它就会与之后出现的第一个*/匹配,之后如果再有*/出现就成了非法字符,编译器会提示错误。
例如,
#include<
Hello,world\n"
);
/*/*printf("
It'
sOK!
\n"
*/
getchar();
这个程序无法通过编译,因为编译器认为注释的语句是“/*printf("
”语句,最后的“*/”是非法字符。
2.2.2实型数据类型
编写程序,定义和使用常见的实型数据。
floatx;
/*定义单精度类型变量x*/
doubley;
/*定义双精度类型变量y*/
x=1.23;
y=123.456;
%f,%lf\n"
,x,y);
1.230000,123.456000
实型也称为浮点型,分为实型常量与实型变量。
1.实型常量的表示方法
(1)十进制数形式:
由数字和小数点及正负号组成。
23.678,.678,23.
必须有小数点。
(2)指数形式:
由数字、小数点、字母e或E及正负号组成。
例如,3.5E-5,2e3是合法的实数。
e或E之前必须有数字,且后指数必须为整数。
下面不是合法的实数:
345(无小数点)
E7(阶码标志E之前无数字)
-5(无阶码标志)
53.-E3(负号位置不对)
2.7E(无阶码)
2.实型变量
实型变量分为:
单精度(float型)、双精度(double型)和长双精度(longdouble型)三类,如本案例中分别使用类型名float和double进行定义变量x和y。
在VisualC++中,单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。
双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字,如表2-2所示。
表2-2实型变量的数值范围
类型说明符
比特数(字节数)
有效数字
数的范围
float
32(4)
6~7
10-37~1038
double
64(8)
15~16
10-307~10308
longdouble
128(16)
18~19
10-4931~104932
实型变量定义的格式和书写规则与整型相同。
floatx,y;
(定义x,y为单精度实型变量)
doublea,b,c;
(定义a,b,c为双精度实型变量)
2.2.3字符型数据类型
编写程序,定义和使用字符型数据。
【设计思想】
每个字符都有对应的ASCII码值,字符'
a'
,'
b'
的ASCII码值分别为97和98,将97、98赋给变量c1,c2,再以字符(%c)和整数(%d)的格式输出。
main()
charc1,c2;
c1='
;
c2='
%c%c\n"
,c1,c2);
/*以字符的形式输出*/
%d%d\n"
/*转换为c1和c2的ASCII码形式输出*/
ab
9798
char为字符类型的类型名。
字符型数据和整型数据是通用的。
另外大写字符和小写字母的ASCII值相差码值32,一个小写字母减去32即可得到该小写字母对应的大写字母。
字符型数据包括字符常量和字符变量。
1.字符常量
字符常量是用单引号括起来的一个字符。
例如,'
,'
='
+'
?
'
都是合法字符常量。
在C语言中,字符常量有以下特点:
(1)字符常量只能用单引号括起来,不能用双引号或其他括号。
(2)字符常量只能是单个字符,不能是字符串。
(3)字符可以是字符集中任意字符。
但数字被定义为字符型之后就不能参与数值运算。
5'
和5是不同的,'
是字符常量,不能参与运算。
2.转义字符
转义字符是一种特殊的字符常量。
转义字符以反斜线“\”开头,后跟一个或几个字符。
转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
转义字符主要用来表示那些用一般字符不便于表示的控制代码,如表2-3所示。
表2-3常用的转义字符及其含义
转义字符
转义字符的意义
ASCII代码
\n
回车换行
10
\t
横向跳到下一制表位置
9
\b
退格
8
\r
回车
13
\f
走纸换页
12
\\
反斜线符“\”
92
\'
单引号符
39
\”
双引号符
34
\a
鸣铃
7
\ddd
1~3位八进制数所代表的字符
\xhh
1~2位十六进制数所代表的字符
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。
表中的\ddd和\xhh正是为此而提出的。
ddd和hh分别为八进制和十六进制的ASCII代码。
\101'
表示代表ASCII码(十进制)为65字母'
A'
,'
\102'
表示字母'
B'
\134'
表示反斜线,'
\XOA'
表示换行等。
3.字符变量
字符变量用来存储字符常量,即单个字符。
字符变量类型定义的格式和书写规则都与整型变量相同。
charc1,c2;
每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。
字符值是以ASCII码的形式存放在变量的内存单元之中的。
例如,字符'
的十进制ASCII码是97,'
的十进制ASCII码是98。
对字符变量c1,c2赋予'
和'
值:
c1='
实际上是在c1,c2两个单元内存放的是字符'
的ASCII码值,所以也可以把它们看成是整型量。
C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。
在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。
例如:
printf("
就是输出字符变量c1和c2的ASCII码值。
如果整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低八位字节参与处理。
4.字符串常量
字符串常量是由一对双引号括起的字符序列。
例如,"
CHINA"
,"
Cprogram"
,"
$12.5"
等都是合法的字符串常量。
字符串常量和字符常量是不同的量。
它们之间主要有以下区别:
(1)字符常量由单引号括起来,字符串常量由双引号括起来。
(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。
(4)字符常量占一个字节的内存空间。
字符串常量占的内存字节数等于字符串中字节数加1,增加的一个字节中存放字符"
\0"
(ASCII码为0),这是字符串结束的标志。
例如,字符串"
在内存中所占的字节为:
C
p
r
o
g
a
m
\0
字符常量'
和字符串常量"
a"
虽然都只有一个字符,但在内存中的情况是不同的。
在内存中占一个字节,可表示为:
"
在内存中占两个字节,可表示为:
2.3算术运算符与算术表达式
2.3.1算术运算符和算术表达式的简单使用
编写程序,学习和使用算术运算符和算术表达式。
inta,b;
a=1,b=2;
a+b=%d\n"
,a+b);
a-b=%d\n"
,a-b);
a*b=%d\n"
,a*b);
a/b=%d\n"
,a/b);
/*/为除法运算符*/
a%%b=%d\n"
,a%b);
/*%为求余运算符*/
a+b=3
a-b=-1
a*b=2
a/b=0
a%b=1
算术运算符有+,-,*,/,%:
(1)在“/”运算中,若操作数均为整数,则执行整除运算,舍去小数部分。
例如,1/2的结果为0,要想得到小数可以使用强制类型转换运算符,写成表达式(double)1/2,也可以写成1.0/2,它们的结果都为0.5。
(2)求余运算符“%”要求其运算对象必须为整型。
两个实数类型的变量求余是不允许的。
算术表达式是用算术运算符和括号将操作数连接起来的,符合C语法规则的式子。
+'
+a*b/c+2.8
2.3.2强制类型转换
编写程序,学习和掌握强制类型转换。
inti;
x=3.6;
i=(int)x;
printf(“x=%f,i=%d”,x,i);
x=3.600000,i=3
1.强制类型转换形式
(类型名)(表达式)
例如:
(double)(a+b)
表示把a+b的和强制转换为double型。
案例中i=(int)x表示把float型变量x的值强制转换成整型赋值给整型变量i,即把x的值3.6的整数部分3赋值给变量i。
另外,本案例的运行结果也表明强制类型转换得到的是一个所需类型的中间量,原表达式或变量的类型和值并不发生变化,如案例中变量x,(int)x后,x的值与类型不变。
2.各类数值型数据间的混合运算
(1)运算过程:
先自动转换成同类数据,再进行运算。
(2)转换规则:
低字长类型转换成高字长类型。
double←float
↑
long
unsigned
int←char,short
①向左的横向箭头表示即使在同一种数据类型间进行运算时也要进行转换,用于提高精度。
②向上纵向箭头表示当运算对象类型不同时的转换方向。
2.4赋值运算符和赋值表达式
编写程序,学习和使用赋值运算符和赋值表达式。
intx=0,y=0;
floatm;
x=1;
%d,"
,x);
y+=2;
/*等价于y=y+2*/
,y);
y*=x+4;
/*等价于y=y*(x+4)*/
%d\n"
m=y;
/*整型变量y的值赋予实型变量m的值*/
printf(“%f”,m);
1,2,10
10.000000
1.赋值运算符(=)
形式:
变量名=常量或表达式
作用:
将右边常量或表达式的值赋给左边的变量
x=1;
2.复合赋值运算符
(1)复合赋值运算符:
在赋值符“=”之前加上其他运算符。
(2)共有10种复合赋值运算符:
+=,-=,*=,/=,%=,<
<
=,>
>
=,&
=,^=,|=
y+=2等价于y=y+2,
y*=x+4等价于y=y*(x+4)。
3.赋值表达式
由赋值运算符将一个变量和一个表达式连接起来的式子即为赋值表达式。
赋值表达式的值为被赋值的变量的值。
a=b=c=6表达式的值为6
a=(b=4)+(c=6)表达式的值为10
a=(b=4)*(c=6)表达式的值为24
4.类型转换
如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。
具体规定如下:
(1)实型赋予整型,舍去小数部分。
前面的例子已经说明了这种情况。
(2)整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
见案例变量的m值。
(3)字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。
整型赋予字符型,只把低八位赋予字符量。
2.5关系运算符和关系表达式
设a=3,b=2,c=1,求下面关系表达式的值:
c>
b;
a-b==1;
b+c<
定义六个整型变量a,b,c,m,n,k,然后输出这个三个关系表达式的值。
inta=3,b=2,c=1,m,n,k;
m=c>
n=(a-b)==1;
k=b+c<
a;
printf(“m=%d,n=%d,k=%d”,m,n,k):
m=0,n=1,k=0
C语言提供六种关系运算符:
,<
=,>
,>
=,==,!
=。
在六个关系运算符中,<
<
=,>
>
=的优先级相同,高于==和!
=,==和!
=的优先级相同。
关系运算符的优先级低于算术运算符,但关系运算符的优先级高于赋值运算符。
关系表达式是由关系运算符构成的表达式,如案例中的(a-b)==1和b+c<
a表达式。
由案例运行的结果可以看出,C语言的关系表达式的值只有两种:
1——“真”,0——“假”。
2.6逻辑运算符和逻辑表达式
计算下面各逻辑表达式的值。
设a=3,b=4,c=5。
(1)a+b>
c&
&
b==c
(2)a||b+c&
b-c
(3)!
(a>
b)&
!
c||1
定义六个整型变量a,b,c,m,n,k,然后输出这个三个逻辑表达式的值。
inta=3,b=4,c=5;
intm,n,k;
m=a+b>
b==c;
n=a||b+c&
b-c;
k=!
c||1
m=%d,n=%d,k=%d"
,m,n,k);
m=0,n=1,k=1
C语言提供三种逻辑运算符:
(逻辑与)、||(逻辑或)、!
(逻辑非)。
其中,&
和||是二元运算符,它要求有两个操作数。
逻辑运算符的运算顺序为:
!
(非)→&
(与)→||(或)。
逻辑运算符和其他运算符优先级的关系可表示如下:
可以看出“&
”和“||”低于关系运算符,“!
”高于算术运算符。
由案例的运行结果可以看出,逻辑表达式的值应该是一个逻辑量“真”或“假”。
C语言中真用1表示,假用0表示。
当把一个数值看成一个逻辑量的时候,非零表示真,零表示假。
2.7条件运算符和条件表达式
输入一个字母,如果是大写字母则把字母转换成其小写形式。
判断输入的字符是否为小写,如果不是进行转换。
所以,首先用条件运算符或者是条件判断进行判断。
charch;
scanf("
%c"
,&
ch);
ch=(ch>
&
ch<
Z'
)?
(ch+32):
ch;
,ch);
A
(1)条件运算符?
:
,要求有三个操作对象,称为三元运算符,是C中唯一的一个三元运算符。
(2)条件表达式的一般形式为:
表达式1?
表达式2:
表达式3
求解过程为:
如果表达式1的值为真,条件表达式的值为表达式2的值,否则为表达式3的值。
2.8逗号运算符和逗号表达式
编写程序,学习和使用逗号运算符。
b=(a=3*5,a*4,a+5);
%d"
,b)
20
逗号运算符又称顺序求值运算符,其求解过程为:
自左至右,依次计算各表达式的值,最后一个表达式的值即为整个逗号表达式的值。
本例中,b等于整个逗号表达式的值,也就是表达式3的值。
对于逗号表达式还要说明两点:
(1)逗号表达式一般形式中的表达式1和表达式2也可以又是逗号表达式。
表达式1,(表达式2,表达式3)
形成了嵌套情形。
因此可以把逗号表达式扩展为以下形式:
表达式1,表达式2,…表达式n
整个逗号表达式的值等于表达式n的值。
(2)程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。
2.9自增(++)和自减(--
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 数据类型 运算 表达式