第2章 C数据类型(新)
第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语言引入了“转义字符”。
C语言学习第二章数据类型
基本整型:表示的范围为0X0~0XFFFF。
2.4.2 整型变量
1.整型变量在内存中的存放形式
以二进制补码的形式存放。
正数:最高位为0,其余各位是该数的二进制表示 负数:最高位为1,其余各位是该数绝对值的二进制
再按位取反加1
2. 整型变量的分类
放一个字符。
下面是对c1、c2赋值: c1=‘a’;c2=‘b’; (实际上其内存中存放的是该字符的ASCII码)
字符变量的初始化,如:char c1=‘a’,c2=‘b’;
2.5.3 字符数据在内存中的存储形式及其使用方法
将一个字符常量放到一个字符变量中,实际上是将该字 符的ASCII代码以二进制形式放到存储单元中。
无符号型:(只能存放0和正整数) ① 基本整型:类型说明符为unsigned int或unsigned
在内存中占2个字节 取值范围为0~2161,即0~65535。 ② 短整型:类型说明符为unsigned short (int) 所占字节和取值范围均同基本整型。 ③ 长整型:类型说明符为unsigned long (int) 在内存中占4个字节 其取值范围是0~2321 即0~4294967295
实型常量也称为实数或者浮点数。 实型常量不分单、双精度,都按双精度double型处理,其有 效位数为(15~)16位。
实型常量的表示方式有:
(1)十进制小数形式
小数形式由数字0~ 9和小数点组成。
当某浮点数整数部分或小数部分为0时,0可以省略,但小 数点不可省略。
例如:
0.0 , .25 ,5.789 ,0.13 ,5.0 , 300. 267.8230 , 123. 等均为合法的实数。
C语言——第02章数据类型1
例2.2 整型变量的定义与使用
#include <stdio.h> void main() { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d);
}
(4) 整型数据的溢出 例2.3 数据的溢出 #include <stdio.h> 2 void main() 3 { 4 short a,b; 5 a=32767; 6 b=a+1; 7 printf("%d,%d\n",a,b); 8 }
区分变量名和变量值是两个不同的概念
练习:为变量a和b分别赋一个实数,求
a-b
a+b
的结果.
#include<stdio.h> void main() { float a,b; scanf(“%f%f”,&a,&b); printf("%f\n",(a-b)/(a+b)); }
§2.4 整型数据
练习:
编写:定义2个单精度变量a和b,求其和存入变量sum中; 定义2个双精度变量c和d,求其积存入变量tim中,a、b、 c、d的值任意给。
#include <stdio.h> void main() { float a,b,sum; double c,d,tim; scanf(“%f%f%f%f”,&a,&b,&c,&d); sum=a-b; tim=c*d; printf(“sum=%f tim=%f\n”,sum,tim); }
“规范化的指数形式‛,即在字母e(或E)之前 的小数部分中,小数点左边应有一位(且只能有 一位)非零的数字。 一个实数在用指数形式输出时,是按规范化的指 数形式输出的。 例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e5 其中的1.23456e2称为“规范化的指数形式”。
C语言程序设计 第2章 数据类型
2.2常量和变量 变量名与变量值的关系:
2.2常量和变量
变量的使用:先定义后使用
变量定义的一般形式:
数据类型 变量名1,变量名2,…,变量名n;
2.2常量和变量
➢ 凡未被事先定义的,系统不把它认作变量名,这就 能保证程序中变量名使用的正确
例:varname,在使用的时候误写成vaname
➢ 在定义变量时要指定变量的类型,在编译时就能为 变量分配相应的存储单元
5
2.2常量和变量
甘草 三七 干姜 葛根
枸杞 人参 陈皮 地黄
山药 当归 谷芽 黄连
贴上标签 加以区分
用标识符给变量起名字
2.2常量和变量 变量命名规则
➢ 只能由字母(a~z,A~Z)、数字(0~9)和下划线(_)构 成
➢ 第一个字符不能为数字 ➢ 不能与关键字同名
例:a9,_a, A_num √ 9a, a*num,int ×
控制语句:控制语句用于控制程序的流程。 C语言提供三类控制语句: ➢ 选择语句 ➢ 循环语句 ➢ 转移语句。 控制语句会在第三章和第四章详细介绍。
2.7 表达式与语句
复合语句: 复合语句由一对大括号括起来的一 条或多条语句组成。 例:{
turnOn(0,3); turnOn(0,4); turnOn(0,5); turnOn(1,4); }
2.7 表达式与语句
表达式语句:表达式末尾加上“;”就构成一条 表达式语句。 例:
s = 3.14 * r * r; 就是一条赋值表达式语句。表达式语句最后的 分号是语句中必不可少的一部分。
2.7 表达式与语句
函数调用语句:函数调用语句由函数调用加分 号构成。 例:
turnOn(1,1);
C语言第02章 数据类型、运算符与表达式
回到 首页
运算符和结合性 P325,附录3
2.8 算术运算符和算术表达式
3、自增、自减运算符
自增运算符++和自减运算符--均是单目运算符, 功能是使变量的值增1或减1。其优先级高于所有 双目运算符,结合性为右结合性(自右至左)。
回到 首页
例如:++i或i++ 等价于i=i+1; --i或i-- 等价于i=i-1;
2.7数值型数据之间的混合运算
回到 首页
1、整型、实型、字符型数据之间可以混合运 算
整型(包括int,short,long)和实型(包括float,double)数据可 以混合运算,另外字符型数据和整型数据可以通用,因此,整 型、实型、字符型数据之间可以混合运算。 例如,表达式10+'a'+1.5-8765.1234*'b'是合法的。
2.9赋值运算符和赋值表达式
1、赋值运算符和赋值表达式
赋值运算符:“=”为双目运算符,右结合性。 赋值表达式:由赋值运算符组成的表达式称为赋值表达 式。 赋值表达式一般形式: 变量 赋值符 表达式 如 a=5 类型转换:将高精度的数据类型赋值给低精度的数据类 型,可能出错。
回到 首页
2.9赋值运算符和赋值表达式
2.8 算术运算符和算术表达式
3、自增、自减运算符
回到 首页
y=++x;等价于先计算x=x+1(结果x=6),再执行y=x,结果y=6。 y=x++;等价于先执行y=x,再计算x=x+1,结果y=5,x=6。 y=x++*x++;结果y=25,x=7。x++为后缀形式,先取x的值进行“*” 运算,再进行两次x++。 y=++x*++x;结果y=49,x=7。
第2章 C语言基本数据类型与常用库函数
结束, (1)字符串以结束标志 ( ‘\0’ ) 结束, 字符串以 如 "CHINA" 在内存中为 C H I N A \0 (2)空串 ""存放形式为 \0
是字符串常量。 (3)注意:'a' 是字符常量, "a" 是字符串常量。 注意: 是字符常量,
2.3.2 符号常量 符号常量: 给常量所起的名字。 符号常量: 给常量所起的名字。 例如: 例如: #define PI 3.14159 则 PI 即 3.14159
1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1
2011-6-5
7
(2)其他类型如表2-1所示: 其他类型如表2 所示:
表 2 -1 有符号 占字节数 2 2 4 2 无符号 2 4 类型标识符 int short long unsigned int unsigned short unsigned long 数值范围 -32768~32767 32768~ -32768~32767 32768~ -2147483648~2147483647 2147483648~ 0~65535 0~65535 0~4294967295
2011-6-5
13
3.字符常量 3.字符常量 (1)用单引号括起来的一个字符。 用单引号括起来的一个字符。 一个字符 如 'a' 'A' '?'
(2)字符常量的值:该字符的ASCII码值 字符常量的值 该字符的ASCII码 ASCII 'A'——65, —— ——65 ——97 如 'A'——65, ' a ''——97 (3)字符数据可以参加运算, 字符数据可以参加运算, 例如‘ 的值为67 67, ASCII码 例如‘A’+2 的值为67,即 'C ' 的ASCII码
第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章基本数据类型与表达式
2.1.3 关键字
关键字(又称保留字)是一种语言中规定具有特定含义的标识符。 C语言可使用以下32个关键字:
auto
double int struct
break
else long switch
case
enum
char
extern
const
float short
continue default
for signed goto sizeof
例: main() { int x,y,z,w; /*定义x,y,z,w为整型变量*/ unsigned int k; /*定义k为无符号整型变量*/ x=10; y=-20; k=30; z=x+k;w=y+k; /*不同类型的整型变量x、y、k可运算*/ printf(″x+k=%d,y+k=%d\n″,z,w); } 程序运行结果为: x+k=40,y+k=10
3. 字符常量
C语言的字符常量是用单撇号括起来的一个字符。如 ′x′,′+′,′\n′,′\101′都是合法的字符常量。 字符数据在内存中是以ASCII码存储,它的存储形式与整数的存储 形式类似。因此可以通用。例如: #include <stdio.h> main() { char c1,c2; c1=97; c2=98; printf(″%c ,%c\n″c1,c2); printf(″%d, %d\n″c1,c2); } 在程序中我们将整数97和98分别赋给c1和c2,它的作用相当于以 下两个赋值语句: c1=′a′; c2=′b′; 运行时输出结果如下: a,b
4. 字符串常量
• C语言没有专门的字符串类型变量,但有字符串 常量。字符串常量是由一对双撇号括起来的字符 序列。 如:″changsha″, ″central south university″,″+++ \\?ab″都是合法的字符串常量。 • 不要将字符常量与字符串常量混淆。如: ′a′是字符常量, ″a″是字符串常量
第二章 C语言的基本数据类型及运算
解决的方法是: 使用反码或补码的表示方法(按前述
表示的编码称为原码),即能将减法一律 转换为加法。
2020/12/11
原码、反码和补码
11
正数:原码、反码、补码相同
– 符号位为0,数值为对应的二进制数。 +109
[01101101]原 = [01101101]反 = [01101101]补
• 指数只能是整数,而尾数则可以是整数也可以是 小数 ,无论指数或尾数均不能省略 例如:1e、E.5、E-3 非法
• 实型常量的类型:默认为double型,后面加F (或f),则强调表示该数是float类型 例如:3.5f、1e2F
2020/12/11
3. 字符型常量
22
可视字符常量 – 单引号括起来的单个可视字符 例如:'a'、'A' 、'+' 、'3'、' ' 等
例如: #define LEN 2.5
定义符号常量
main( )
{ float a,b;
a= 2*3.14 *LEN;
使用符号常量
b=3.14*LEN*LEN;
printf("a=%f,b=%f\n",a,b);
}
编译前系统进行替换
2020/12/11
5. 符号常量
25
main( )
{ float a,b;
负数:
– 原码符号位为1,数值为绝对值的二进制
数。
-109 [11101101]原
– 反码符号位为1,数值为绝对值的二进制
数各位变反。 -109 [10010010]反
– 补码符号位为1,数值为绝对值的二进制
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’
《C语言程序设计》第二章基本数据类型
《C语⾔程序设计》第⼆章基本数据类型⽬录:2.1 常量与变量2.1.1 常量2.1.2 变量2.2 简单的屏幕输出2.3 数据类型2.4 如何计算变量或数据类型所占内存空间的⼤⼩2.5 变量的赋值和赋值运算符2.6 本章扩充内容2.7 本章知识点⼩结2.8 本章常见错误⼩结2.1.1 常量不同类型的整型常量实例特点有符号整型常量10,-30,0默认的int型定义为有符号整数,因此对int型⽆须使⽤signed⽆符号整型常量30u,256U⽆符号整型常量由常量值后跟U或u来表⽰,不能表⽰成⼩于0的数,如-30u就是不合法的长整型常量-256l,1024L长整型常数由常数值后跟L或l来表⽰⽆符号长整型常量30lu⽆符号长整型常量由常数值后跟LU、Lu、lU或lu来表⽰不同类型的实型常量实例特点单精度实型常量 1.25F,1.25e-2f单精度实型常量由常量值后跟F或f来表⽰双精度实型常量0.123,-12.35,.98实型常量隐含按双精度型处理长双精度实型常量 1.25L长双精度型常量由常量值后跟L或l来表⽰2.1.2 变量定义变量的⼀般形式:类型关键字变量名;关键字(Keyword):C语⾔预先规定的、具有特殊意义的单词auto :声明⾃动变量break:跳出当前循环case:开关语句分⽀char :声明字符型变量或函数返回值类型const :声明只读变量continue:结束当前循环,开始下⼀轮循环default:开关语句中的“默认”分⽀do :循环语句的循环体double :声明双精度浮点型变量或函数返回值类型else :条件语句否定分⽀(与 if 连⽤)enum :声明枚举类型extern:声明变量或函数是在其它⽂件或本⽂件的其他位置定义float:声明浮点型变量或函数返回值类型for:⼀种循环语句goto:⽆条件跳转语句if:条件语句int:声明整型变量或函数long :声明长整型变量或函数返回值类型register:声明寄存器变量return :⼦程序返回语句(可以带参数,也可不带参数)short :声明短整型变量或函数signed:声明有符号类型变量或函数sizeof:计算数据类型或变量长度(即所占字节数)static :声明静态变量struct:声明结构体类型switch :⽤于开关语句typedef:⽤以给数据类型取别名unsigned:声明⽆符号类型变量或函数union:声明共⽤体类型void :声明函数⽆返回值或⽆参数,声明⽆类型指针volatile:说明变量在程序执⾏中可被隐含地改变while :循环语句的循环条件int main(void){int a; //⽤关键字int指定变量a的类型float b; //⽤关键字float指定变量b的类型char c; //⽤关键字char指定变量c的类型a=1; //为int型变量a赋值整型变量1b=2.5; //为float型变量b赋值实型变量2.5c='A'; //为char型变量c赋值字符型变量'A'return0;}⼀个C 程序必须且只能有⼀个⽤main作为名字的函数,这个函数成为主函数;main后⾯圆括号内的void表⽰它没有函数参数;main前⾯的int表⽰函数执⾏后会返回操作系统⼀个整数型,在main函数的函数体中的最后⼀条语句使⽤return语句返回了这个值,通常返回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语言能力教程》第2章基本数据类型
• 其中的l(long)和h(short)称为长度修饰符,是附加的格式说明符。
格式字符串与数据类型
• unsigned short a = -1u; • 语句printf("%hu", a);中格式字符串hu(无符号短整型)准确地匹配了变量a
printf函数的输出结果不会是22亿。这条语句有逻辑错误。
分析下面语句的输出结果。
• printf("%lu", 2200000000); • printf("%ld", -1); • printf("%lu", -1u); • printf("%hd", -1); • printf("%hu", -1u); • printf("%hu", -2);
编码和解码
• 现实世界中的数据转换成由0和1组成的二进制串,计算机才能存储和处理。 由数据得到01串称为编码;由01串得到数据称为解码。
• 每类数据都各有特点,只用一种编码规则统一编码是不现实的。不同类型的 数据如整数和小数,采用了不同的编码规则。
• 多种编码规则导致不同数据的编码结果可能相同,因此,只有确定了编码规 则,才能正确解码。
功的识别的16。 • 当用户输入32789↙时,全部识别成功,但短整型变量m的实际值不会是
的类型,printf函数正确地输出变量a的实际值65535。 • 语句printf("%hd", a);中格式字符串hd(短整型)与变量a的类型不匹配,
第二章 C语言的基本数据类型
标识符的有关规定:只能由字母、数字和下划线 组成,且第一个字符必须是字母或下划线;字母区分 大小写;不同的C编译系统规定标识符长度不同(如 IBM PC的MS C取8个字符,而Turbo C则允许32个字 符),考虑到程序的可移植性及阅读程序的方便,标 识符的长度一般不要超过8个字符,且应注意做到“见 名知意”
2、十六进制整常数:十六进制整常数的前缀为0X或0x。 其数码取值为0~9,A~F或a~f。 以下各数是合法的十六进制整常数: 0X2A(十进制为42)、 0XA0 (十进制为160)、 0XFFFF (十进制为65535) 以下各数是不合法的十六进制整常数: 5A (无前缀0X)、 0X3H (含有非十六进制数码) 3、十进制整常数: 十进制整常数没有前缀。其数码为0~9。 以下各数是合法的十进制整常数: 237、 -568、 65535、 1627 以下各数是不合法的十进制整常数: 023 (不能有前导0)、23D (含有非十进制数码)
各种无符号类型量所占的内存空间字节数与相应的有符号 类型量相同。但由于省去了符号位, 故不能表示负数
Turbo C中各类整型量所分配的内存字节数及数的表示范围。 类型名称 (中文) 类型名称 (英文) 占用的 字节数 2 2 2 2 4 4 取值范围 -32768~32767 0~65535 -32768~32767 0~65535 -2147483648 ~2147483647 0~4294967295
第二章 C语言的基本数据类型
教学内容: 1 C语言的数据类型 C语言的数据类型 2 常量与变量 3 整型数据 4 实型数据 5 字符型数据 6 变量赋初值 7 变量数据类型转换 基本要求: (1) 掌握基本数据类型及其常量的表示方法; (2) 掌握变量的定义及初始化方法; (3) 掌握变量数据类型的转换法 重点: 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 符号名 常量值 例: 计算圆的周长时
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)。
所以,int型数据存储范围为: -215 ~ 215-1 -32768 32767
2 浮点型常量的表示方法
十进制小数形式
由符号、数字和小数点(必须)组成 整数和小数部分都可省略,但不能同时省略 举例,12.3、-.123、123.、0.、.0
§1.1 基本语法单位
C规定了基本的语法单位。
如:字符、标识符、关键字、运算符、分隔符、常量 和变量等。 常量:程序中不能改变其值的量。 变量:程序执行过程中可以改变值的量。 1. 字符集 C规定的合法字符集是ASCII码字符集(即英文字符)。 (p435附录D) 2.关键字(所有关键字用小写表示!) 预先定义的具有特定含义的标识符。也称为保留字, 不能另作他用。 If then else
2
变量的初始化
int num2, num3=100;
定义变量时对变量赋初值。例如: char ch1=‘b’, ch2;
float r=2.345; 使程序简洁,提高程序的可读性。
3
变量地址
存放变量的内存空间中的首单元地址称为变量地址。 存放的内容称为变量的值。
例如: int a=1250; float b=123.67;
例如,如有定义char c1=‘A’,而查附录可知字符’A’
的ASCII码值为65,则字符’A’在内存中的存储形式 为
0
1 0
0
0
0 0 1
另外,如有定义char c2=‘2’,而字符‘2’的ASCII码为
50,故其在内存中为
0
0 1
1
0
0 1 0
结论:
字符变量中存放的也是整数(该字符所对应的ASCII
无 符 号
基本型
短整型 长整型
16
16 32
unsigned [int]
unsigned short unsigned long
整型变量的定义与使用举例
void main() { int a; /*定义有符号基本整型变量a*/ unsigned b;/*定义无符号基本整型变量b*/ long c; a = -23; /*定义有符号长整型变量c*/ /*a的值为-23*/
§1.1 基本语法单位
3.标识符 标识符是编程者给使用的常量、变量、函数、语句标
号等命名的字符串。
只能由字母、数字和下划线组成,并以字母和下划线
开始。(标识符不能以数字开头!) 合法:str2,name _line,two_and_three ,pi 非法:5class m*n student name int 起名时尽量能“见名知意”,如:sum,result 大小写字母有别,如:name与Name不同
整型变量
整型变量:一般的整型变量为基本型,用int关键字
来定义。一个int型变量在内存中占两个字节(VC中
占4个字节)。 int a;
在定义整形变量时,除基本型int外,在C中还可以用 以下几种修饰符对int型数据进行修饰,以扩大int型 数据的范围:
long
长整型 4 byte
short 短整型 2byte
出现将有效位以外的数字舍去而造成误差
#include<stdio.h> void main() { float x ; double y ; x=222222.222; y=222222.222; //从表面上看,x,y的值都没有超出其 //类型的表示范围
printf("x=%f \ny=%f\n",x,y); }
变量
在程序执行过程中其值可以改变的量。
1 变量定义
在C中,变量必须先定义后使用,定义时包括说明: 类型说明 变量名表; 例如: int num; char ch1, ch2; float length; 变量名一般用小写字母,应符合标识符规定。
变量
每个变量在计算机中对应相应长度的存储空间。 其实,定义不同类型的变量,是在告诉系统,需 要开辟多大的空间来存放相应的数据。
3、字符型
字符常量:用单引号引起来的字符。如‘a’、
‘S’、‘4’等
注意 :在C中,‘a’与’A’及‚a”都是不同的
除了这种形式的字符常量外,C还有一种特殊
形式的字符常量:以反斜杠‘\’为开头的字符 序列,称之为‚转义字符‛。如前面接触的 ‘\n’。
转义字符及其功能
说明 '\ddd' 1到3位8进制数ASCII码代表的字符
指数形式
由整数(或小数)、e(或E)、整数顺序组成 e或E之前必须有数字,之后必须是整数 举例,123.4e-5表示123.4×10-5 错例,e1、12e、1.2e3.4、.e5、e
规范化指数形式
规范化指数形式 类似于“科学计数法” e或E之前的小数中,小数点前面有且仅有一个非零数字 举例,123.456 规范化形式,1.23456e2、1.23456E+002 非规范化形式,123.456、12.3456e1、12345.6e-2、 0.123456e3、12345600e-5…
变量的进一步理解:
A B C
char a; int
b;
float c;
综上,变量的总结:
(1)变量中的值:变量中的值是可以根据程序的需要而改变 的; (2)变量的类型:与容器类似,每一种类型的变量中所能 存放的数据的最大值是一定的,如对于int的变量,其中所 能存放的最大正整数为32767,当超过这个值时,与在某一 容器中放入过量的水一样,也会产生所谓的“溢出”。 (3)变量名:用于区分不同的变量。变量名也被称为“标识 符”(symbol)。
b = 45; /*b的值为45*/ c = a + b; /*c的值为22*/ }
例2.1 整数的不同进制数表示及转换。
main( ) { printf("%d %x %o\n",125,125,125); printf("%d %x %o\n",045,045,045); printf("%d %x %o\n",0x32,0x32,0x32); }
float double long double
实型数据在内存中的存储形式
用小数部分和指数部分来表示,例如:
12.3456
数符
+
小数(尾数)
0.123456
指数符号
-
指数 (阶码)
2
小数部分 (决定精度)
指数部分 (决定取值范围)
浮点型数据的舍入误差
由于浮点型变量能够表示的有效数字有限,因此会
浮点型(实型)变量的类型
分类 单精度 float 双精度 double 长双精度 long double
长度和取值范围
类
型
长度 (byte) 有效数字 4 8 16 6~7 15~16 18~19
绝对值范围
10-37~1038 10-307~10308 10-4931~104932
符号常量:
符号常量:用一个标识符来代表一个常量。此时,
符号就相当于某一常量的别名,如下例
#define PI 3.14159 #include <stdio.h> void main( ) { float r,s; printf("请输入圆的半径:"); scanf("%f",&r); s=PI*r*r; printf(" Area =%f \n",s); }
int a; a=3;
定义了一个整型变量,名为a 将常量3赋给变量a
a 3
……
变量的定义与存储
当在程序中定义变量后,系统为变量在存储器中分
配一定的存储单元,即存储空间,其大小由所定义 的类型决定
char a;
字符型,1个字节
int
b;
float c;
对于变量的进一步理解:
程序中的变量,就类似于我们生活中装水的容器。
逗号:类型说明和函数参数的间隔。 空格:关键字和标识符间的间隔。 int max(int x , int y)
§1.2 基本语法单位
C中的基本数据类型(Data Types)
基本类型 整型 单精度型 字符型 实型(浮点型) 枚举类型 双精度型 数组类型 结构体类型 共用体类型 指针类型 空类型
数据类型
符号常量:
符号常量还有一种用法:用const关键字说明的标识符,
也是一种符号常量,如 const float PI=3.14159 或 float const PI=3.14159 则在以后的程序中,PI的值不允许变化。参看下例: void main( ) { const int i=10; int const j=20; i=15; j=30; …… }
字符变量:
用char关健字定义的变量,如:char c1,c2;
字符型变量占一个字节。
说明 :在字符变量中,只能存放一个字符,不能
如下对字符变量赋值:
c1=‘ab’;或 c1=”a” 而只能这样赋值:
c1=‘a’;
思考:写成c1=‘\n’,是否正确?
字符型数据在内存中的存放形式
我们知道,字符变量在内存中所占的空间是一个字节, 而在这个字节中存放的,是这个字符的ASCII编码。
&a 2500H 2501H &b 2502H 2503H 2504H 2505H |--------------------2506H
| |—————— |------1250-------- a=1250 |—————— |-----------------|-----123.67------- b=123.67