new_第2章 数据类型运算符和表达式
第2章 c语言基本数据类型、运算符和表达式
1000000000000101
1111111111111010
1111111111111011
整型数据所分配的字节数及数的表示范围(16位系统)
整型数据类型
[signed ]int unsigned [int] [signed] short [int] unsigned short [int] [signed ]long [int] unsigned long [int]
制和十六进制只是整型数值的三种表现形式而已。 整型常量类型的确定:根据值大小默认类型。 整型常量后面加后缀1或L,则认为是long int型。 无符号数也可以用后缀表示,整型常数的无符号数的后缀为“U”或“u”。 注意:在程序中是根据前缀来区分各种进制数的。因此在书写时不要把前缀弄错造
成结果不正确。
缺省形式的 整型数据类型
int unsigned short int unsigned short int long int unsigned long
字节数
取值范围
2
-32768~32767(-215~215-1)
2
0~65535
2
-32768~32767(-215~215-1)
2
0~65535(0~216-1)
3.字符型常量
字符常量是用单引号括起来的一个字符。它有二种形式:可视字符常量、转义字符常量。 (1)可视字符常量:单引号括起来的单个可视字符。
大多数字符常量都可以通过加单引号的方式表示,但有些特殊字符,如单引号本身和有些不 可见的特殊字符,就无法通过这种方法表示,为了解决这一问题,C语言引入了“转义字符”。
第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案
2.2 标识符、常量与变量
符号常量
【例2-1】输入圆的半径,计算周长和面积。 #define PI 3.14159 void main() { float r,c,s; scanf("%f",&r); c=2*PI*r; s=PI*r*r; printf("r=%f,c=%f,s=%f\n",r,c,s); }
以下是合法的整型常量:
2.2 标识符、常量与变量
实型常量
实型常量只能用十进制形式表示 表示形式:
小数形式。由数字序列和小数点组成,如 3.1415926、-0.15、.15、2.等都是合法的实型 常量。 指数形式。由十进制数加上阶码标志“e”或 “E”及阶码组成,如3.14e-4或3.14E-4表示 3.14×10-4。
2.2 标识符、常量与变量
2.2.3 变量
在程序运行过程中,其存储的值可以被改变的量称 为变量 变量必须通过标识符进行说明,称为变量名。 变量名和内存单元地址存在映射关系,程序可以通 过变量名寻址,从而访问其存储的数据。
2.2 标识符、常量与变量
变量的定义和说明
数据类型 变量名1[,变量名2,…,变量名n];
long型转换成float型时由原来可达10位整数变成只有7位有效数字精度丢失但由于数的范围扩大了数据类型从较低级提升到较高级随着竞争日益激烈酒店嘴中的肥肉被大肆抢夺各大酒店在这场竞争中几乎溃不成军
21世纪高等学校精品规划教材
第2章 数据类型、运算符 和表达式
掌握C语言的基本数据类型 掌握标识符、关键字、常量和变量的使用 掌握运算符、表达式以及数据类型之间的转换 等 掌握简单数据的输入输出
C语言教程课件第二章 数据类型、运算符和表达式
例 整型变量的定义与使用
#include <stdio.h> void main() { int a,b,c,d; /*指定a、b、c、d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf("a+u=%d,b+u=%d\n",c,d); }
例 向字符变量赋以整数。 • 运行结果: #include <stdio.h> a b void main() 97 98 { char c1,c2; c1=97; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); }
• 说明:在第4和第5行中,将整数97和98分别赋给c1和c2,它 的作用相当于以下两个赋值语句: c1='a';c2='b'; 因为'a'和'b'的ASCII码为97和98
• 字符型变量用来存放字符常量,注意只能放一个字符。 • 字符变量的定义形式如下:char c1,c2; • 在本函数中可以用下面语句对c1,c2赋值: c1='a';c2='b'; • 一个字符变量在内存中占一个字节; • 将一个字符常量放到一个字符变量中,是将该字符的 相应的ASCII代码放到存储单元中,这样使字符型数据 和整型数据之间可以通用。一个字符数据既可以以字 符形式输出,也可以以整数形式输出。
运行结果: total=300 例2.1 符号常量的使用 #define PRICE 30 #include <stdio.h> void main ( ) 说明:如再用赋值语句给PRICE赋值是错的 { PRICE=40;/*错误,不能给符号常量赋值*/ int num, total; num=10; total=num * PRICE; printf(″total=%d\n ″,total); } 说明: 程序中用#define命令行定义PRICE代表常量30,此后凡在 本文件中出现的PRICE都代表30,可以和常量一样进行运算
第二章+数据类型、运算符和表达式
格式项的一般形式为:
%[附加格式] 格式控制符
方括号中的内容可以缺省。
附加格式控制
含义说明
l(小写字母)
m
数据最小输出宽度(一个具体正整数)
.n(一个具体 对实数,表示输出几位小数;对字 正整数) 符串,表示截取的字符个数
-(负号) 输出的数据域内向左对齐
+(正号) 要求正数和0带正号输出,负数带符 号输出
变量的定义 格式为: 类型 变量列表;
可同时定义多个同类型的变量,之间用逗 号分隔。 变量的初始化 1. 变量定义时:格式为 类型 变量名=常数; 2. 变量定义后:通过赋值语句实现
2019/7/20
变量的作用域:变量能够起作用或者 可以被使用的程序范围。由定义的位 置决定
1. 局部变量:在函数内部定义的变量, 只在其定义的某个函数或复合语句范 围内有效。
3) 例题分析:example25
2019/7/20
4. 寄存器变量:程序运行时存储在CPU寄 存器中的变量,只用于局部变量,要求 是整型和字符型变量。说明符“register”
5. 外部变量:表示该变量可以在程序中的 任何地方使用,包括定义此变量的源文 件之外,作用域为整个工程。只能用于 全局变量。说明符为“extern”。
a string”
2019/7/20
注意:“A”与‘A’完全不同,前者是字 符串,后者是字符,它们在内存中的存 贮空间并不相同。 在字符串中使用双引号必须以“\”” 表示。
实例 example22 符号常量:用标识符命名的常量,可代
替常量 在程序中直接使用。 1. 使用C语言中的一个预编译指令#define
整型常量:可以用十进制、八进制和十 六进制来表示。 a.十进制整数:[ ± ]若干各0~9的数字。 如12, 0 ,-234等
第2章_数据类型运算符及表达式--参考答案
C) double型D)不确定
C
13. C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符:
A)必须为字母B)必须为下划线
C)必须为字母或下划线D)可以是字母,数字或下划线中的任意一种
C
14.若有定义int x=3,y=2和float a=2.5,b=3.5,则表达式:
1、一个C语言的执行是从:()
A)本程序的主函数开始,到本程序的主函数结束
B)本程序的第一个函数开始,到本程序的最后一个函数结束
C)本程序的主函数开始,到本程序的最后一个函数结束
D)本程序的第一个函数开始,到本程序的主函数结束
A
2.以下叙述正确的是:
A)在C程序中,主函数必须位于程序的最前面
B)在C程序中,一行只能写一条语句
C) 3*a*e/b*c D) a*e/c/b*3
C
28.已知x=43,ch='A',y=0,则表达式(x>=y&&ch<'B'&&!y)的值是:
A) 0 B)语法错
C) 1 D) "假"
C
29.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是:
A) 5.5 B) 5
C) 3 D) 4.0
A
37.下面程序的输出的是
main()
{int x=10,y=3;
printf("%d\n",y=x/y);
}
A) 0 B)1 C) 3 D)不确定的值
C
38.若有说明和语句
int a=5;
a++;
第2章数据类型,运算符与表达式参考答案及解析
参考答案及解析一、选择题1. 答案:C【解析】C语言的标识符命名规则为:①只能由字母、数值和下划线3种字符组成;②第一个字符必须是字母或下划线;③不能与C语言中的关键字或保留字相同。
2. 答案:C【解析】标识符命名规则:标识符必须由字母(a~z或A~Z)或下划线(_)开头;标识符的其他部分可以用字母、下划线或数字(0~9)组成;大小写字母表示不同意义,如cout和Cout 代表不同的标识符;在定义标识符时,虽然语法上允许用下划线开头,但是,我们最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。
因此,本题正确答案为C)。
3. 答案:C【解析】C语言合法标识符的命名规则是:标识符只能由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
因为选项C)中的标识符的第一个字符为"&",所以选项C)为本题的正确答案。
4. 答案:A【解析】在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。
C语言的标识符可以分为关键字、预定义标识符和用户标识符。
选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字,故本题答案为A)。
5. 答案:B【解析】C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。
6. 答案:C【解析】C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。
选项C)中goto和int是关键字,b-a中"-"不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。
7. 答案:B【解析】合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。
第2章数据类型、运算符和表达式
(2)预定义的标识符 预定义的标识符在C语言中都有特殊含义,如 scanf和 printf 是库函数名,系统中用来作为输入输出函数。用户一般不要用 它们作为自定义标识符。 (3)用户自定义标识符 在程序中使用的变量名、符号常量名、函数名、数组名、类 型名、文件名、标号名等有效的字符序列,除库函数的函数名、 关键字由系统定义外,其余都由用户自定义,统称为用户自定 义标识符。 例如: total,area,_ab,sum,average,student_name,等 都是合法的标识符。 标识符虽然可由程序员随意定义,但标识 符是用于标识某个量的符号。因此,命名应尽量有相应的意义, 以便阅读理解,做到“见名知义”。 变量名要用小写字母,符号常量名要用大写字母。即在标识 符中,大小写是有区别的。例如:A和a是两个不同的标识符。
数据类型 类型说明符 数值范围
整型 int -32768~32767 -215~215-1 0~65535 -32768~32767 -215~215-1
字节
2 2 2 2 4
无符号整型 unsigned int 短整型 short
无符号短整 unsigned short 型 long 长整型 无符号长整 unsigned ong 型
2.2.4 字符串常量
字符串常量是由一对双引号括起的字符序列。例如: "CHINA" ,"C program." , "$12.5" 等都是合法的字符串常 量。字符串常量和字符常量是不同的量。它们之间主要有以下 区别: ①字符常量由单引号括起来,字符串常量由双引号括起来。 ②字符常量只能是单个字符,字符串常量则可以含零个或多个 字符。
3、十进制整常数 十进制整常数没有前缀。其数码为0~9。 以下各数是合法的十进制整常数:237,-568 ,65535 4、整型常数的后缀 在16位字长的机器上,基本整型的长度也为16位,因此表 示的数的范围也是有限定的。十进制无符号整常数的范围为 0~65535,有符号数为-32768~+32767。如果使用的数超过了 上述范围,就必须用长整型数来表示。长整型数是用后缀“L” 或“l”来表示的。例如: 十进制长整常数 158L (十进制为158) 358000L (十进制为358000) 八进制长整常数 012L (十进制为10) 077L (十进制为63) 0200000L (十进制为65536) 十六进制长整常数 0X15L (十进制为21) 0XA5L (十进制为165) 0X10000L (十进制为65536
第2章 C语言,数据类型、运算符和表达式
(C语言运算符总表见教材P26或P325附录C) return 31
C语言程序设计
算术运算符
+ - * / % 功能: 操作数要求: 结合性: 优先级: 注意事项: 算术运算 两个操作数 (当-用作负号时除外) 自左至右(当-用作负号时除外) -(负号) —— * / % —— + - (由高→低) ① 两个整数相除,结果为整数! 例: 3/2=1 ② %要求两个操作数均为整型数据! 且余数与被除数同号!
说明: ① 字符变量中存放的是字符ASCII码值! ② char与int数据间可进行算术运算!
char choice = 'A';
return24
C语言程序设计
字符串常量
字符常量是用双引号括起来的字符序列. 例如: "hello!" , "0" (1) 字符串常量在内存中的存储 (2) 字符串常量.vs.字符常量
整型
浮点型 字符型 说明:
① 数据类型所占字节数随机器硬件不同而不同! ② 可用sizeof(数据类型说明)来计算某一数据类型占内存的字节数! return
C语言程序设计 next part
2. 常量与变量
标识符命名 常量 变量
go go go
6
C语言程序设计
标识符命名
例: 判断下列标识符号合法性
next
ห้องสมุดไป่ตู้
20
C语言程序设计
字符常量
转义字符是用反斜杠\后面跟一个字符或一个八进制或十 六进制数表示的ASCⅡ码值。例如: '\n', '\101' (1) C语言中常用的转义字符 (2) 转义字符使用实例
C语言第2章 数据类型及运算符
C/C++程序设计第2 章数据类型及表达式计算机学院C/C++程序设计课程组C/C++程序设计第2章主要内容本章主要介绍:基本数据类型和存储类型的说明方法,以及基本运算符的运算规则和表达式的构成方法,为后续章节的学习奠定一个基础。
C/C++程序设计2.1 C 语言的数据类型使用高级语言编写程序,主要工作有两项:一是描述数据,二是描述数据加工的方法。
数据类型图 2.1C 语言的数据类型基本类型整型实型字符型带符号长整型(简称长整型)带符号整型无符号整型无符号整型无符号短整型无符号长整型单精度型双精度型空类型构造类型指针类型枚举类型数组类型结构体类型共用体类型C/C++程序设计2.2 常量常量是程序运行过程中其值不发生变化的数据。
2.2.1 整型常量表2.1 整型数据的表示方式2.2.2 实型常量3.14、.9999、-3.14159、834.、–0.666 、6.89E-52.2.3 字符常量’x’,’a’,’A’,’b’,’$’,’#’ ,printf("\tab\rcd\n\’ef\\g");2.2.4 符号常量#define 符号常量字符串#define PI 3.14159C/C++程序设计【例2.1】求一个圆柱体体积,用符号常量代替π。
#include <stdio.h>#define PI 3.14159 /*定义PI为符号常量*/void main(){float r,h,v;scanf("%f,%f",&r,&h);v=PI*r*r*h; /* PI相当于3.14159,参与运算*/printf("Volume=%f",v);}运行时输入:3,2↙运行结果为: Volume=56.548618C/C++程序设计2.2.5 字符串常量"\tab\rcd\n\’ef\\g“"I am a student" 、"x"、""注意:’\0’和’0’不同,’\0’是编码为0的字符,而’0’则是数字0,其编码为48。
C语言程序设计第2章-1数据类型、运算符和表达式
2、 C 语言的运算符的优先级与结合性
3、表达式:由操作数和运算符组成的序列。
5
精品文档
⒉ 真值: 带符号位的机器数对应的数值称为机器数的真值。 (10100011)2= -35
⒊ 无符号数:当计算机字长的所有二进位都用来表示(biǎoshì)数值时,称 为无符号数。
2.2.2 原码、反码和补码
⒈ 原码
整数 X 的原码指:其数符位 0 表示正,1 表示负,其数值部分
就是 X 的绝对值的二进制表示。
2.1 常用 的进位制 (chánɡ yònɡ)
2.1.1 二进制、八进制和十六进制(shíliùjìn zhì)数
3
精品文档
2.1.2十、二进制、八进制和十六进制数之间的换算
⒈ 二、八、十六进制数 → 十进制数的换算采用按权展开法。
(2AB.F)16 = 2χ162+10χ161+11χ160+15χ16-1 = 683.93 ⒉ 十进制数 → 二进制数的换算整数部分(bù fen)采用除以二取余直到商
19
精品文档
2.5.1 算术运算符与算术表达式
⒈ 基本的算术运算符:
14
精品文档
3.字符常量
字符常量是用单撇号括起来的单个字符或转义字符,
如: ‘a’, ‘9’, ‘&’, ‘\n’, ‘\’’, ‘\101’。
字符常量的值为该字符的ASCII码值,如 ‘a’值为97, ‘\n’
第2章 数据类型、运算符与表达式
注意事项:
八进制的数码范围为0--7; 则:018、091、0A2 都是错误的数据表示方法。
十六进制的数码除了数字0-9外, 还使用英文字母a-f (或A-F)表示10-15。 如:0x1e、0Xabcdef、0x1000 但:0X2defg、0x100L都是错误的。
第二章 2.2 常量和变量
二、定义方法
整型变量分别以下列方式定义 1. 基本整型 int a, b, c;
2. 短整型 3. 长整型 short int 或 short a, b, c; long int 或 long a, b, c;
4. 无符号型 unsigned a, b, c;
unsigned short a, b, c; unsigned long a, b, c;
4. 一个非负整数<32768 则可赋给 unsigned int。
5. 一个常数后加 'l',或'L',表示长整数. 如123l. 主要
用于函数调用时形、实参数传递。
练习:请补充完整下列程序,使之符合给定的运行结果
Main( ) {int a,b, sep,tim; a=7;b=2; tim=a*b; sep=a/b; printf(“ ”); printf(“ ”); }
c1=97;
c2=98;
printf ("%c %c", c1, c2)
} 运行结果 a b
例2: main ( ) { char c1, c2; c1= ' a ';
c2=' b ';
c1=c1– 32; c2=c2– 32;
printf ("%c %c", c1, c2)
C++程序设计第2章数据类型、运算符和表达式
11
2.2 C++的基本数据类型
不同计算机系统可能存在数据类型的长度不一样可用sizeof(数据类 型)测试某数据类型的字节长度。 cout<<“size of int is”<<sizeof(int)<<endl; 在16位计算机结果:
在32位计算机上输出:
size of int is 2
size of int is 4
3
2.1 保留字和标识符
2.1.1 保留字 C++中保留字(Reserved word)也称为关键字 (Keyword),它们是预先定义好的字符集合,对C++ 编译程序有着特殊的含义。表2-1给出了C++和Visual C++兼容的保留字。 保留字是语言系统的保留成分,编程者不能使用它们作为 自己的变量名或函数名等。
7
2.2 C++的基本数据类型
基本类型 整型 字符型 浮点型 布尔型 枚举类型 数组类型 结构体类型 共用体类型 类类型
数据类型
构造类型
指针类型 引用类型 空类型(void) 图2-1 C++的数据类型
8
2.2 C++的基本数据类型
C++语言的基本数据类型有如下四种: 整型,说明符为int; 字符型,说明符为char; 浮点型(实型),分为float(单精度浮点型),double(双精度 浮点型); 布尔型,说明符为bool。它的值是true和false。 教材中表2-2列出了Visual C++6.0中基本数据类型的情况。 注意:不同数据类型其值域不同,应住这些值域,在程序设计中, 要估计变量的值不应超过这些值域,否则将产生数值溢出现象,产 生编译器无法检测的错误。
C语言教程第2章数据类型、运算符与表达式
常量只能在定义时赋值,然后不能再改变 其值 常数、 const常量、宏常量和枚举常量, 都可以用来表示一个永远不会改变的数
前者不建议直接使用,而用后三者代替
C语言大学实用教程
2.5 变 量
变量是在程序执行过程中可以改变、可以赋 值的量。
在程序中每一个变量都有一个名子即变量名, 程序对该变量访问(存入、读取)都是通过变 量名进行的。
运行结果: 1234567936.000000
1234567890.000000
}
C语言大学实用教程
2.6 常用运算符及表达式
算术运算符
+,-,*,/,%
加、减、乘、除、求余运算 四则混合运算中,先算乘除,后算加减, 按从左向右的顺序计算,左结合
#include <math.h>
常用的标准数学函数
C语言大学实用教程
#include <stdio.h> /*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值: 整型数a和b之和 */ int Add(int a, int b) { return (a + b); }
2.1 一个简单的C程序例子
/*主函数*/ ) { int x, y, sum = 0;
022、-037 010和10大小不一样 因为八进制并不常用,所以此种表示法比较少见
以“0x”或者“0X”开始的整型常数是十六进 制
A~F和a~f用来表示十进制的10~15
十六进制的形式比较常用,尤其在进行位一级的 控制的时候 0x12、-0x1F, -0x1f
C语言大学实用教程
2.4 常量
字符常量
C语言第02章 数据类型、运算符与表达式ppt课件
整型〔包括int,short,long〕和实型〔包括float,double〕数 据可以混合运算,另外字符型数据和整型数据可以通用,因此, 整型、实型、字符型数据之间可以混合运算。
例如,表达式10+'a'+1.5-8765.1234*'b'是合法的。
回到
回到
2.2常量与变量
首页
2.2、变量的定义 〔1〕变量是先定义,后使用。
定义一个变量需要提供两方面的信息:变量的名字和 类型
〔2〕定义格式 类型说明符 变量1, 变量2,…;
如 int number;
回到
2.3整 型 数 据
首页
1、整型常量的表示方法 〔1〕 十进制整常数。没有前缀 〔2〕 八进制整常数。以0作为前缀。 〔3〕 十六进制整常数。十六进制整常数的前 缀为0X或0x。
实型变量提供的有效数字是有限的
一个很大的数+一个很小的数,没有意义
回到
2.4实 型 数
首页
2、实型变量
【例2.8】 显示个人微机上不同类型变量所占的字节数
回到
2.5字符型数据
首页
1、字符常量 〔1〕定义 字符常量是用单引号〔' '〕括起来的一个字符。 例如,'a'、'='、'?'都是合法的字符常量。 〔2〕字符常量特点
回到
作业和实验习题
首页
作业:P41 2.3 2.4 2.7 2.9 2.11〔做在书 上〕 2.12
实验:
P20 例2.2 2.3
P23 例2.4
P24 例2.5
P27 例2.7
C++第2章 数据类型与表达式
signed long int
unsigned long int float double long double
singned long
unsigned long —— —— ——
有符号长整型(同long int)
无符号长整型 浮点型 双精度型 长双精度型
4
4 4 8 10
-2,147,483,648~2,147,483,647
128u // unsigned 1024UL // unsigned long
1L
// long
8Lu
// unsigned long
14
2.2.1 整型字面值常量
2.前缀类型标识
在C++中整型有三种表示形式:10进制、8进制和16进制,以非 0开头的数是10进制,以0开头表示8进制,以0x或0X开头表示 16进制,例如:
H e A \0 AΒιβλιοθήκη llo \0
图2-2 字符串与字符的存储方式
23
2.2.6 枚举
C++程序设计 第2章 数据类型、运算符和表达式
第2章 数据类型、运算符和表达式
2.1 2.2 2.3 2.4 2.5 2.6 2.7 基本数据类型 常量 变量 基本运算符 类型转换 表达式和语句 本章小结
2
2.1 基本数据类型
为什么要区分数据类型?
C++通过数据类型,告诉计算机数据是如何定义的。
10
2.1.5 C++的数据类型
C++数据类型如图2-1所示。
基本数据类型 整数类型(int) 单精度型(float) 浮点类型 双精度型(double) 字符类型(char) 布尔类型(bool) 空值类型(void) 枚举类型 数组类型 C++数据类型 构造数据类型 结构与联合类型 指针类型 引用类型
C语言知识点:第2章 数据类型、运算符与表达式
主讲教师:杨剑
第 2 章:数据类型、运算符与表达式
1. 本章目标:
理解变量和常量的含义 熟悉基本数据类型 - int、char、float 和 double 使用算术运算符 理解类型转换 使用关系和逻辑运算符
2. 内存如何存放数据
电脑使用内存来记忆计算时所使用的数据 内存如何存储数据? 内存像旅馆.数据各式各样,要先根据数据的需求(即类型)为它申请一块合适的空
23. 复合赋值表达式
24. 赋值表达式和逗号运算符
赋值表达式 a=b=c=5;(从右向左计算) a +=a-=a*a
逗号运算符和逗号表达式 3+5,6+8 a=3*5,a*4
25. 习题
~7~
C 语言程序设计知识点
主讲教师:杨剑
有以下程序
main()
{
char a1=’M’,a2=’m’;
12. 单精度浮点型
float 在 C 语言中用于存储单精度浮点数 float 32 位 10-38 至 10+38 ,7 位有效数字 声明:
float price; 初始化:
float score = 11.3; score = 65.90;
13. 双精度浮点型
double 32 位 16 位有效数字 声明:
const float PI=3.14; S=PI*r*r; //等价于 3.14*r*r const 关键字的作用就是“冻结”一个量,它的值不能被修改,是一个只读(read only) 量。 优点:比数值常量可读性好、修改容易
18. 符号常量 2(宏常量)
还可用宏定义符号常量 语法:#define 符号名 常量值 例: 计算圆的周长时
第2章 数据类型、运算符、表达式
第二章 数据类型、运算符、表达式一、数据类型C 语言中的数据类型比别的语言丰富。
基本类型的数据又可分为常量和变量,它们可与数据类型结合起来分类,即为整型常量、整型变量、实型(浮点型)常量、实型(浮点型)变量、字符常量、字符变量、枚举常量、枚举变量。
1、常量与符号常量常量:在程序执行过程中,其值不发生改变的量称为常量。
常量区分为不同的类型,如68、0、-12为整型常量,3.14,9.8为实型常量,‘a ’,‘b ’,‘c ’则为字符常量。
常量即为常数,一般从其字面即可判别。
符号常量:有时为了使程序更加清晰和便于修改,用一个标识符来代表常量,即给某个常量取个有意义的名字,这种常量称为符号常量。
如:#define PI 3.142、变量变量:程序执行过程中其值可以改变的量。
定义方法定义形式:数据类型 变量名1,变量名2,……变量名n ;整型(int )数据类型 基本类型 整型 单精度型(float )字符型(char )长整型(long )短整型(short )实型 双精度型(double )枚举类型(enum )共用体类型(union )构造类型结构体类型(struct )数组类型空类型(void )指针类型(*)如:char ch1, ch2; /* ch1,ch2为变量*/float x, y; /* x ,y 为实型变量*/int a, b, c; /* a,b,c 为整型变量*/在书写变量说明时,应注意以下几点:(1) 允许在一个类型说明符后,说明多个相同类型的变量。
各变量名之间用逗号间隔。
类型说明符与变量名之间至少用一个空格间隔。
(2) 最后一个变量名之后必须以“;”号结尾。
(3) 变量说明必须放在变量使用之前。
一般放在函数体的开头部分。
另外,也可在说明变量为整型的同时,给出变量的初值。
其格式为:类型说明符 变量名标识符1=初值1,变量名标识符2=初值2,...;3、数据在内存中的表示整型数据:以二进制的形式表示(1) int 类型正数: 如 123 (+123)用 16 位二进制(二个字节)表示原码 反码(原码同) 补码(原码同)最大正整数 215-1=214+213+212+211+210+29+2827+26+25+24+23+22+21+20=32767负数:如 –123原码补码(补码加 1)1取反加1 最大负整数-215=32768 因为 -215 < -(215-1) 所以用 -215 而不用 -(215-1)(2) unsigned (int) 类型称为无符号整数,它不是指不带“+ 或 -”号的整数,而是指内存表示这类数时没有符号位,16最大数215+214+213+2122+21+20=65535最小数 0 (3) long (int) 类型用 32 位二进制(四个字节)表示,其他同 int 型(4) short 类型有的计算机(小型、中型、大型机)int 即是 long ,而short 用16 位二进制(二个字节)表示。
C语言程序设计实训教程第2章 数据类型、常量、变量、运算符与表达式
22
23
【例 2.8】 两个 char型数相加,结果为 char 型。( )[判断题,重庆市 2005年第 1次等级考 试] 答案:错 分析:结果是 int型。char型数据在运算前,先 无条件转换成 int型,再参与运算。
24
4)强制类型转换 【例 2.9】 若有 int k =5;float x=1.2;则表达 式( int)( x+ k)的值是( )。[单选题,重庆 市 2001年第 1次等级考试] A.5 B.6.2 C.7 D.6 答案:D
8
返回给定类型或表达式(运算结果)的字节数 (以 unsigned int的形式)。 强制转换运算符 把表达式的结果转变为所需的 类型。 (类型)表达式 运算过程中类型的转换 如图 2.1所示,横向表示无条件的转换,比如 在计算前,char型要先转换成 int再参与计算。 竖向表示操作符两边的操作数属于不同类型时, 精度低的向精度高的方向转换,然后再参与运算, 运算结果为转换后的类型。
9
赋值时类型转换 在赋值时,赋值号右边表达式 的值的类型自动转换为其左边变量的类型。 位运算符 位运算的操作数为整型或字符型。位 运算就是把整数的内部二进制形式按位进行运算。
图 2.1 C 语言类型转换示意图
10
①按位取反∽ 运算规则:
11
②位与(&) 运算规则:
12
③位或( |) 运算规则:
6ห้องสมุดไป่ตู้
运算符 分算术运算符、赋值运算符、关系运算 符、逻辑运算符、逗号运算符、自增和自减运算符、 条件运算符、位运算符等。 表达式 由运算符连接运算对象构成的式子。可 根据运算符的不同分类为算术表达式、赋值表达式、 关系表达式、逻辑表达式、逗号表达式、条件表达 式等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章数据类型、运算数据类型运算符与表达式内容提要基本数据类型基本数据类型;常量和变量;标识符命名标识符命名;常用运算符和表达式;运算符的优先级与结合性2007-05-26C语言大学使用教程课件制作人苏小红2C 程序常见符号分类关键字(Keyword )又称为保留字语言中预先规定的具有固定含义的些单词–又称为保留字,C 语言中预先规定的具有固定含义的一些单词 标识符(Identifier )–系统预定义标识符–用户自定义标识符运算符(Operator )种详见附录–34种,详见附录2分隔符(Separator )–空格、回车/换行、逗号等其它符号–大花括号“{”和“}”通常用于标识函数体或者一个语句块是程序注所需的定符–“/*”和“*/”是程序注释所需的定界符 数据(Data )–2007-05-26C 语言大学使用教程课件制作人苏小红4变量(Variable )–常量(Constant )数据类型(Data Type)Data Type数据为什么要区分类型?不同类型的数据代表不同的–数据表示形式–合法的取值范围–占用内存空间大小–可参与的运算种类从基本数据类型到抽象数据类型–无数据类型–基本数据类型–构造数据类型–抽象数据类型2007-05-26C语言大学使用教程课件制作人苏小红5Data Type 数据类型(Data Type)基本整型整型长整型短整型基本类型实型(浮点型)单精度实型双精度实型无符号整型数据类型字符型枚举类型构造类型数组类型结构体类型指针类型共用体类型2007-05-26C语言大学使用教程课件制作人苏小红6空类型void基本数据类型int–整数,在目前绝大多数机器上占4个字节。
TC2中是2个字节float–单精度浮点数,一般是4个字节长单精度浮点数一般是double–双精度浮点数,一般是8个字节长双精度浮点数般是char–字符,一般是1个字节长字符般是–用来表示256个ASCII字符,或者0~255的整数2007-05-26C语言大学使用教程课件制作人苏小红10数据类型修饰符short–short int,短整数,一般2个字节长。
通常简写为shortlong g–long int,长整数,一般是4个字节长。
通常简写为long–long double,长双精度(高精度)浮点数,一般是10个字节长。
signed–用来修饰char、int、short和long,说明他们是有符号的整数(正整数和负整数)一般缺省都是有符号的所以这个修饰符通正整数、0和负整数)。
般缺省都是有符号的,所以这个修饰符通常省略unsigned–用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)2007-05-26C语言大学使用教程课件制作人苏小红11标识符命名变量名函数名由英文字母、数字和下划线组成,大小写敏感 不可以是数字开头直观,见名知意,便于记忆和阅读–最好使用英文单词或其组合UNIX –切忌使用汉语拼音下划线和大小写通常用来增强可读性–variablename 风格–variable_name –VariableName, variableNameWindows风格 不允许使用关键字作为标识符的名字–int , float , for , while , if 等某些功能的变量采用习惯命名如语句所采用的循环变量惯用2007-05-26C 语言大学使用教程课件制作人苏小红7–如:for 语句所采用的循环变量习惯用i, j, kprintf(("------------("------------("char %d\ printf("char %d ("int %d\ printf("int %d printf(short int %dshort int %d\ ("short("long int %d\ printf("long int %d ("float %d\ printf("float %d变量声明使用变量的基本原则–变量必须先定义,后使用–所有变量必须在第一条可执行语句前定义声明的顺序无关紧要一条声明语句可声明若干个同类型的变量声变量是初始化变量的最好时机声明变量,是初始化变量的最好时机–不被初始化的变量,其值为危险的随机数char esc = 'a';int i = 1;int sum = 0;2007-05-26C 语言大学使用教程课件制作人苏小红13float eps = 1.0e eps = 1.0e--5;数据在内存中的存储格式整型实型字符型阶符号阶的数值阶码j 尾数S阶码符号阶码的数值尾数符号尾数的数值2007-05-26C 语言大学使用教程课件制作人苏小红15常数(Constant )整型常数–18、-31–长整型常量123l 、123L 、123456l 、123456L –无符号型常量123u 、123U浮点常数–十进制小数形式123.45、456.781453–指数形式1e 1e--2、4.5e3–单精度实型常量123.45f 、456.78F 、1e 1e--2f 、4.5e3F 12345l 45678L 1453L –长双精度型常量123.45l 、456.78L 、1e 1e--2l 、4.5e3L 2007-05-26C 语言大学使用教程课件制作人苏小红17符表示'A' ascii = 64 = 1 000 001 = 100 0001宏常量宏常量–也称符号常量–一般采用大写字母表示#define 标识符字符串–不是语句,而是一种编译预处理命令M S b tit liti 宏替换(Macro Substitulition )#include <stdio.h>##define PI 3.14159#define R 5.3main (){printf ("area = %f ("area = %f\\n", PI * R * R);%f ("circumference =%f\n"2*PI *R);2007-05-26C 语言大学使用教程课件制作人苏小红23printf ("circumference = %f ("circumference = %f\\n", 2 * PI * R);}const常量用const修饰定义的变量为常量–const float pi = 3.1425926;常量只能在定义时赋值然后常量只能在定义时赋值,然后不能再改变其值常数、const常量、宏常量和枚举常量,都可以用来表示一个永远不会改变的数–前者不建议直接使用,而用后三者代替2007-05-26C语言大学使用教程课件制作人苏小红25算术运算符+,-,*,/–加、减、乘、除运算四则混合运算中先算乘除后算加减–四则混合运算中,先算乘除,后算加减,按从左向右的顺序计算,左结合%–求余运算常用的标准数学函数函数名功能函数名功能t()的平方根0()sqrt(x)计算x 的平方根,x 应大于等于0 exp(x)计算e x 的值fabs(x)计算x 的绝对值pow(x,y)计算x y 的值log(x)计算lnx 的值sin(x)计算sinx 的值,x 为弧度值2007-05-26C 语言大学使用教程课件制作人苏小红26log10(x)计算lgx 的值cos(x)计算cosx 的值,x 为弧度值13 % 4 = 1关系运算符>,>=,<,<=,==,!=–大于,大于等于,小于,小于等于,等于,不等于–关系运算符运算出的结果为0和非0–0,表示假,即该关系不成立表示真即该关系成立–非0,表示真,即该关系成立–绝大多数编译器,关系运算得到的非0结果为1,但是不要利用这个12007-05-26C 语言大学使用教程课件制作人苏小红27operation number ~0 : -1, 0.5, 1, ......result ~0 : 1逻辑运算符逻辑运算也被称为布尔(Boolean)运算&&–与运算–( a > b && b > c);a大于b,并且b大于c||–或运算–( a > b || b > c);a大于b,或者b大于c(||)!–求反–( !a );如果a是0,结果非0;如果a是非0,结果是0–并不改变a的值2007-05-26C语言大学使用教程课件制作人苏小红28实例ch是英文大写字母(ch >= 'A') && (ch <= 'Z')判断某年判断某一年year是否是闰年的条件是满足下列两个条件之一:–能被4整除,但不能被100整除;整除但不能被整除–能被400整除;((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) 2007-05-26C语言大学使用教程课件制作人苏小红29类型转换在进行赋值操作时会发生类型转换在进行赋值操作时,会发生类型转换将取值范围小的类型转为取值范围大的类型是安全的反之是不安全的–如果大类型的值在小类型能容纳的范围之内,则平安无事–但是,浮点数转为整数,会丢失小数部分,非四但是浮点数转为整数会丢失小数部分非四舍五入–反之,转换后的结果必然是错误的,具体结果与反之转换后的结果必然是错误的具体结果与机器和实现方式有关。
避免如此使用2007-05-26C语言大学使用教程课件制作人苏小红30自动类型转换同种数据类型的运算结果还是该类型同种数据类型的运算结果,还是该类型不同种数据类型的运算结果,是两种类型中取值范围更大的那种–long double> double> float> long>int> short> char>>把数据赋值给另外一种类型变量也会发生自动类型转换–从小到大,顺利转换–从大到小,可能丢失信息(好的编译器会发出警告)从大到小可能丢失信息(好的编译器会发出警告)2007-05-26C语言大学使用教程课件制作人苏小红32增一和减一运算符增和减运算符 n++,n --,++n ,----n n–++让参与运算的变量加1,--让参与运算的变量减1作为后缀运算符时先取的值然后加–作为后缀运算符时,先取n 的值,然后加/减1–作为前缀运算符时,先加/减1,然后取n 的值m n++ m = n++;等价于–m=n;++–n++; m = ++n;等价于–n++;–m=n;2007-05-26C 语言大学使用教程课件制作人苏小红34增一和减一运算符增和减运算符良好的程序设计风格提倡在一行语句中一个变 良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次加1或者减1运算–过多的加1和减1运算混合,不仅可读性差,而且因为编运算混合不仅可读性差而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果2007-05-26C语言大学使用教程课件制作人苏小红35赋值运算符下面两个语句是等价的–i = i + 2;–i += 2;i+=2;+、-、*、/、%运算符都可以按此种方式处理这种形式看起来更直观,而且执行效率一般也能更高一些能更高些2007-05-26C语言大学使用教程课件制作人苏小红37条件表达式把a和b中的最大值放入z中–if(a > b)z a;z=a;elsez = b;–z = (a > b) ? a : b;种繁此种表达式切忌用得过于繁杂2007-05-26C语言大学使用教程课件制作人苏小红39优先级( ) [ ] ( ) [ ] --> .()[] ! ~ ++ ! ~ ++ ----+ + --* & (类型) sizeof * / %+ + --<< >>< <= > >===!=! &^|&&||?:? : = += = += --= *= /= %= &= ^= |= <<= >>= ,2007-05-26C 语言大学使用教程课件制作人苏小红40优先级能背下优先级表的人凤毛麟角用括号来控制运算顺序更直观、方便,并减少出错的概率2007-05-26C语言大学使用教程课件制作人苏小红41结合性多数运算符为左结合少数为右结合:–一元运算符元运算符–赋值运算符–条件运算符2007-05-26C语言大学使用教程课件制作人苏小红42这一章我们学到了这章我们学到了变量的命名规则数据类型–char,short,int,long,float,double,long double –signed,unsigned–enum常数转义字符常数、转义字符运算符–算术运算符、关系运算符、逻辑运算符、增一/减一运算符、位运算符、赋值运算符、类型强转运算符、逗号运算符、条件运算符(?:)、sizeof类型转换优先级和结合性2007-05-26C语言大学使用教程课件制作人苏小红43ASCII 字符表12007-05-26C 语言大学使用教程课件制作人苏小红44。