C03 数据类型与运算

合集下载

C语言的基本数据类型及其运算

C语言的基本数据类型及其运算
2.2 常量与变量
——C语言中的数据分为常量和变量。他们都有类型之分。 常量和变量是在计算机中数据类型的具体表现形式,它们不再 是抽象的概念而是实在的数据,这些数据符合对数据类型的规定 (形式和运算规则两方面)。常量和变量之间的区别在于程序执行
过程中的变化情况。常量是一成不变的,而变量则可以不断改变。
变量定义的格式:
type namelist;
数据类型的 类型标识符 准备声明的变 量名称列表
当同时声明多个变量 时,需要将变量名之 间用“,”逗号分隔开。
注意: 任何一个变量都必须具有确定的 数据类型,变量类型告诉 C该变 变量的基本数据类型: 量的用法以及保存的方法。不管 整型变量、实型变量、字符型变量 变量的值怎样变化,必须符合该 类数据类型的规定(形式和规则 两个方面)。
字符串
本钢工学院 计算机系马驰 v1.0 2003年6月 第12页
C语言的基本数据类型及其运算
符号常量:在C语言中允许程序中的常量定义为一个标识符,这个
标识符称为符号常量。既带有名字的常量。 定义格式: #define <符号常量>
符号常量必 须在使用前 先定义 例如: <常量> #define #define
溢出处理:不同的数据类型规定了不同的机内表示长度,也决定了
对应数据量的变化范围。当某一数据超出该数据类型所 规定的范围时,计算机会拒绝接受,而将之转换成范围 内的另外某个数,这种情况称之为溢出处理。
溢出演示:21.c
本钢工学院 计算机系马驰 v1.0 2003年6月 第4页
C语言的基本数据类型及其运算
符号常量
本钢工学院 计算机系马驰 v1.0 2003年6月 第13页
C语言的基本数据类型及其运算

CT03数值计算

CT03数值计算

阶乘程序的几点注解
• 由于乘法结合律,累积的次序是不重要的. 如按下面的循环来累积:
for f in [2,3,4,5,6]: for f in [2,4,6,1,3,5]: for f in range(2,n+1)
• range()函数
range(n) range(start,n) range(start,n,step)
Lu Chaojun, SJTU
2
数值数据类型
• 整数类型int
– 不带小数点 – 可存储整数的精确值
• 浮点数类型float
– 带小数点 – 计算机只能存储浮点数的近似值!
• 经验:如果不是确实需要小数,就用int. • type(<expr>)函数
– 返回<expr>的值的类型
Lu Chaojun, SJTU
• fact也可初始化为n
整数的限制
• 计算机中的数值是现实数值的一种计算 机表示,两者可能有不同的行为!
– 例如:整数集是无穷集,但int是有穷的.
• 二进制是计算机表示数据的基础
– n位二进制只能表示2n个不同值 – 整数若用32位表示,则int范围为 231 ~ 2311 – 试试看:计算2147483647和2147483648
– 用到math.sqrt()函数
– 小测验:不用sqrt()能求平方根吗?
库函数一般效率高.
Lu Chaojun, SJTU
6
数学库中的常用函数
pi : 常数 e : 常数e sqrt(x): 平方根 sin(x), cos(x), tan(x), asin(x), acos(x), atan(x): 三角函数 log(x), log10(x):自然对数与常用对数 exp(x): e的x次方 ceil(x): x的最小整数 floor(x): x的最大整数

第2章_数据类型、运算符和表达式《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语言的基本数据类型 掌握标识符、关键字、常量和变量的使用 掌握运算符、表达式以及数据类型之间的转换 等 掌握简单数据的输入输出

第二章+数据类型、运算符和表达式

第二章+数据类型、运算符和表达式
2019/7/20
格式项的一般形式为:
%[附加格式] 格式控制符
方括号中的内容可以缺省。
附加格式控制
含义说明
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等

c03 运算方法与运算器

c03  运算方法与运算器

3、根据加数、被加数、和的符号判断 (1)当操作数中的加数与被加数符号相同 时,若结果的符号与操作数的符号不一 致,表示溢出;否则,表示无溢出。 (2)当两个符号不同的操作数相加时,肯 定不会产生溢出。 例:[X]补=0.1010,[Y]补=0.1001 [X]补+[Y]补=1.0011(溢出)
练习题及参考答案
3.2 定点乘法运算及其实现
实现乘除法运算的方案: 1、使用乘除运算较多,速度要求高时, 硬件直接实现; 2、一般情况,配臵乘除法选件; 3、而对速度要求不高的机器,用软件 实现.
3.2.1 原码一位乘法
1、手算过程(两个无符号数) 例: +0.1101×-0.1011
× 1 0 0 1 1 0 1 0 0 0
1.已知:X=-0.01111,Y=+0.11001, 求[X]补,[-X]补,[Y]补,[-Y]补,X+Y=? X-Y=? 并判断是否溢出。 2.用补码运算方法求X+Y=?并判断是否溢 出。 (1)X=0.1001,Y=0.1100 (2) X=-0.0100,Y=-0.1001 3.用补码方法求X-Y=?并判断是否溢出。 (1)X=-0.0100,Y=0.1001 (2) X=-0.1011,Y=0.1010
原码一位乘法
例:已知X=+0.1101 Y=-0.1011 求(X ×Y)原 解:[X]原 =0.1101 [Y]原 =1.1011 Zf = Xf Yf = 1 0 =1 则按原码一位乘法运算规则,求[X×Y]原 的数值部分。 最后求得[X×Y]原 = 1.10001111
流 程 图
判断溢出的方法:
例2 X=0.1011 Y=0.1001 求[X+Y]补 解: [X]变补 = 00.1011 [Y]变补 = 00.1001 [X+Y]变补 = 00.1011 + 00.1001 = 01.0100

C语言实验指导手册

C语言实验指导手册

C 语言实验指导手册本实验指导需要在上课的基础上,参考教材和C 函数手册.chm 和tcstudy.chm 帮助文档来动手完成,完成后给指导老师演示,并请指导老师打分!此实验的目的是帮助初学者能够快速的掌握C 语言程序设计的基本规范和设计技巧。

实验一:C 语言实验环境及C 语言基础(C01) 实验目的:1、 熟悉c 语言的编辑环境,掌握c 程序的总体框架2、 了解c 语言的执行步骤,学会跟踪与调试 第一部分:实验环境安装测试和学习一、C 语言程序开发过程编写一个完整的C 程序需要经过以下5个步骤: 1)启动集成开发环境。

2)进入编辑环境。

3)建立一个新的.c 文件,输入已有代码,并添加相应注释。

4)调试程序(编辑、编译、连接) 5)运行并分析程序输出结果。

在开发过程中,提到了编译,连接等名词,一些初学者还不能很好的对此加以区分,对C 程序的编译过程了解得也不甚清晰,鉴于描述性语言往往不够简明,笔者特制作了下图供读者参考。

图1.1 C 语言程序开发过程说明:图1.1中,如果编译、连接和执行时编译系统提示有错误或程序结果与预期不符,则需要重新修改源程序,直到编译、连接都通过且程序结果与预期相符。

【程序示例】编写程序,在屏幕上输出句子“让我们一起学习C 语言”。

【解】 程序如下:/*******************************************************功 能:本程序在屏幕上输出“Hello World!”编辑编译连接运行作者:XXXXXX编写时间:XXXX-XX-XX*******************************************************/ 注释#include <stdio.h>预编译命令(包含头文件)main( ){主函数首部printf(“Hello World!\n”);语句}程序简单说明:(1)C语言程序必须在文件的开头包含头文件:#include <stdio.h>;(2)每个C程序必须包含且只能包含一个主函数main;(3)函数体必须由一对花括号“{}”括起来;(4)函数都是由语句构成,每条语句必须用“;”结束;(5)C程序区分字母的大小写;(6)/* */之间的内容为注释。

C03

C03

C语言表达式举例
其中的字母均为变量。 其中的字母均为变量。 i + (j – m / n) % 5 n > 5 && i % 3 = = 0 x = y++ % 2 i > j ? n = 2 : n = -2 n >>= 2 x = 3, y *= 6, 89 + 56
常见的数学运算
C语言表达式中的操作符和操作数必须写在同一行上。 语言表达式中的操作符和操作数必须写在同一行上。 对于数学上复杂的表达式如 在改写成单行的表 达式时需用到库函数。 达式时需用到库函数。 (fabs(a)+sqrt(b*b-pow(x, y)))/5 常见的数学运算如求绝对值、求平方根、求幂等在C语 常见的数学运算如求绝对值、求平方根-pow(x, y)))*0.2 言中都已用库函数实现,如求绝对值可用fabs函数, fabs函数 言中都已用库函数实现,如求绝对值可用fabs函数,求平 方根可用sqrt函数,求幂可用pow函数。 方根可用sqrt函数,求幂可用pow函数。 sqrt函数 pow函数 有关数学运算的库函数归类在数学库中, math.h头文 有关数学运算的库函数归类在数学库中,在math.h头文 件中声明。 include命令把math.h头文件包含到程序中 件中声明。用include命令把math.h头文件包含到程序中 命令把math.h 后,就可以方便地使用这些有关数学运算的库函数了。 就可以方便地使用这些有关数学运算的库函数了。
return
3.2.2类型不匹配时的赋值操作
所谓类型不匹配时的赋值操作是指赋值表达式中赋值操 作符左边子表达式值的类型与右边变量的类型不一致。 作符左边子表达式值的类型与右边变量的类型不一致。 字符型数据在内存中以ASCII码形式存储,ASCII码可以 字符型数据在内存中以ASCII码形式存储,ASCII码可以 ASCII码形式存储 看成整数,因此C语言允许字符型数据与整型数据通用。 看成整数,因此C语言允许字符型数据与整型数据通用。 把字符型看作码长一个字节的整型后, 把字符型看作码长一个字节的整型后,C语言的基本数据 类型就只有整型和浮点型两大类了。 类型就只有整型和浮点型两大类了。 因此类型不匹配时的赋值操作有? 因此类型不匹配时的赋值操作有?

C03--顺序程序设计

C03--顺序程序设计

问题: 0123 = ( 0x123 = ( 0Xff = ( 问题: 0123 = ( 0x123 = ( 0Xff = (
)10 )10 )10
83 )10 291 )10 255 )10
C语言程序设计
测绘工程学院
第三章 数据类型、运算符与表达式
实型常量(实数或浮点数) 表示形式: 十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123. 指数形式:(e或E之前必须有数字; 指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 实型常量的类型 默认double型 在实型常量后加字母f或F,认为它是 float 型
C语言程序设计
测绘工程学院
第三章 数据类型、运算符与表达式
3.1 顺序程序举例-坐标转换
include <stdio.h> int main(){ double N,H,B,L,e=1/298.25; double X,Y,Z; printf(“Input N,H,B,L"); scanf("%f%f%f%f'",&N,&H,&B,&L); X=(N+H)*cos(B)*cos(L); Y=(N+H)*cos(B)*cos(L); Z=(N*(1-e*e)+H)*sin(B); printf("%f%f\'%d\'\' = %lf°\n",X,Y,Z); }
0~4294967295 3.4e-38~3.4e38 1.7e-308~1.7e308 -128~127 0~255
C语言程序设计
测绘工程学院
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求字节数运算符 short int m; m=sizeof(m); printf(“short int:%d bytes\n”,m); printf(“short m:%d bytes\n”,sizeof(m)); printf(“long:%d bytes\n”,sizeof(long)); printf(“int 88:%d bytes\n”,sizeof(88)); printf(“32769 :%d bytes\n”,sizeof(32769));
四、正负号运算符
如:-a*b; 等价于:a = 0-a;a*b;
规则: 规则: 正负号运算符是单目运算符,优先级高于*、/。 结合方向是“自右向左”;
五、其它运算符 其它运算符
取地址运算符(&):scanf(“%d%d”,&a,&b); 强制类型转换符(一次有效) (类型标识符)<变量名> int m=4,n=5;float y;y=m/n;y=(float)m/n;语法都对 float a=4,b=5, y;y=a%b;语法错 y=(int)a%(int)b;语法对 int m=4,n;n=sqrt(m);n=sqrt((double)m);语法都对 逗号运算符 a=1,b=2,c=x>a+b;功能等价于a=1;b=2;c=x>a+b; if (a=1,b=2,c=x>a+b)x++; 功能等价于 r=(a=1,b=2,c=x>a+b);if (r) x++;
变量是存储数据的内存单元,在程序运行时刻 其值可被改变。 变量定义是为其确定类型,在编译时刻为其分 配内存单元。使用变量必须首先定义。
2、变量命名规范
唯一命名,见名知义。变量唯一命名,符合 “标识符”的定义,尽量见名知义; 标识符由字母、数字、下划线组成,并且只能 由字母或下划线开头; 避免超长冲突。变量名不要超长(一般7-8个字符),
二、自反算术赋值运算符—复合运算符
a+=b 等价于a=a+b c=b*=a+2 等价于b=b*(a+2),c=b x*=y+8 等价于x=x*(y+8) x%=3 等价于x=x%3 规则:任何基本算术运算符都可与赋值运算符复合成 自反赋值运算符;如自反加赋值(+=)、自反减赋 值(-=)、自反乘赋值(*=)、自反除赋值(/=)、 自反模赋值(%=); 优先级: 与赋值运算符同级(最低); 结合性: 自右向左; 使用目的: 优化程序代码,提高执行效率。
举例:
int a=2,b;b=++a+1; int a=2,b;b=a--+1; 先使a为3,后使b为4 b 先使b为3,后使a为1
int a=2,b=2,c; c=a+++b; 应理解成(a++)+b,结果:c为4,a为3,b不变;当出 现难以区分的若干个+或-组成运算符时,C语言规 定,自左向右取尽可能多的符号组成运算符。 int a=2,b=2,c; c=a---b; 应理解成(a--)-b,结果:c为为0,a为1,b不变。 实际运用时:尽量简单使用括弧隔开,避免二义性。
§3.3.3 不同类型混合运算
表达式中的运算量可以是混合类型的, 表达式中的运算量可以是混合类型的,但系统在 执行运算时仍要转换成类型相同的数据。 执行运算时仍要转换成类型相同的数据。
例如: char ch; int i, result; float f; double d; ………. result = ch / i + f * d – ( f + i ) ; 结果类型?
§3.3.2 算术运算
一、基本算术运算符
运算符: +、-、*、/、%(求余); 没有幂运算, xy由pow(x,y)函数计算; 优先级: *、/、%同级(高),+、-同级(低); 结合性:自左向右。
例如: float a,b;char c1=‘A’,c2; a-b*c 等价于 a -(b * c) a-b+c 等价于 (a - b )+ c 1/3*(a+b+c) 结果为0 a%b 错;应为:(int)a%(int)b (int)a%(int)b 8+3.5 结果为11.5,实型 c2=c1+4; c2的值是‘E’ 字符型变量可参与算术运算,例如p.50
第3章 C语言基础
本章内容 • 数据类型—数据的分类、表示、存储 • 常量与变量—运算分量 • 基本运算—运算符、表达式
§3.1 数据类型
一、数据类型(三类六型) 数据类型(三类六型)
带符号整型 整型 基本类型 实型 数据类型 字符型 构造类型 指针型 枚举型 空类型 数组型 结构型 共用型 无符号整型 带符号普通整型 带符号短整型 带符号长整型 无符号普通整型 无符号短整型 无符号长整型
注意:程序中,常数由字面形式决定其类型;常数用多了影响程序通用性 (尽量使用符号常量或变量)。
符号常量— 2、符号常量 符号名表示常数
(1)由 #define定义符号常量 #define PAI 3.14; //PAI宏名,习惯大写 float r,s; // r、s为变量,其值可变 s = PAI * r * r; //编译时PAI被替换为3.14 PAI=333.33; X //禁止对符号常量赋值 (2)由const定义符号常量(c++中使用) const float PAI=3.1416;//PAI为符号常量 float r,s; s = PAI * r * r; // PAI值恒定不变
注意:符号常量习惯采用大写,使用好处是能做到“一改全 改”。
二、变量
1、变量定义 、
语法: 语法: <类型标识符 类型标识符> 类型标识符 <变量名表 ; 变量名表>; 变量名表
例如:int m,t; //初值不确定 m=m+1; //用法不妥,m原值不确定 m=8;m=m+1; int n=12; //定义变量且初始化 t=m;m=n;n=t; // 交换m、n存储的值 m=n;n=m; // m、n的值能交换吗?
32 16 31 31 15 15
整型
0~2 -1 高3字节尾数, 浮点数存 低1字节阶码 储 高7字节尾数, 低1字节阶码 -2 ~2 -1 0~2 -1 任意长度
8 7 7
字符的 ASCII编码 尾部补'\0'
§3.2 常量与变量 一、常量 1、直接常量 、
—直接写在表达式中的常数(字面常量)。 例如:int r,s; r=12; s=3.14*r*r; 整型常量:12 –12 12L -12l 027 -027 -027L 0X8A -0x8aL 实型常量:3.14 -3.14L 0.314e1 314e-2 字符常量(含转义符):‘A’ ’a’ ’\101’ ‘\x41’ (p.48) 字符串常量:”Abcd” ”A” ”123” “-12”
否则会截断多余字符,引起同名冲突;
标识符中的字母大小写敏感。变量名中的字母 大小写是敏感的(一般用小写); 避免使用保留字。变量名不要使用C语言的保留字
(系统赋于特定含义的标识符,如if、for、while、 do等)。
§3.3 运算符与表达式
表达式是由运算符和运算量组成的有意义的计算 式子。 数学中: 3.14 X R2 ( -b +
单精度型 双精度型 带符号字符型 无符号字符型 相同类型的数据集合 不同类型的数据集合
二、基本类型的标识与常数形式
类型 型 有符 号整 型 整型 无符 号整 型 普通整型 短整型 长整型 单精度型 实型 双精度型 字符 型 有符号 无符号 字符串 double char unsigned char 无类型标识符 double q=22.2; char c2='a'; unsigned char c3='\362'; 用数组存储 'a' 'b' '3' '?' '\101' 65 的八进制 '\x41' 65 的十六进制 "abcdEFG" unsigned int unsigned short unsigned long float unsigned int e, f; unsigned short g; unsigned long h; float r, s; 名称 普通整型 短整型 长整型 类型标识符 int short long 变量说明 int a;int x,y; short b,c=123; long d=22; 123 -123 123L -123l 0277 -0277 027L -0277l 0X8F -0x8f 0X8FL -0x8fl 3.14 3.14L 0.0314e2 常数书写形式
后提升:必转后剩下的int、unsigned int、 long、unsigned long、 double五种类型, 再根据运算符需要向高端类型提升。
例如: char ch ; int i , result ; float f ; double d ; ………. result = ch / i + f * d – ( f + i ) ;
三、基本类型的存储形式
类型 名称 占用字节 存储方式 普通整型 2 高位符号, 有符号 短整型 2 正数原码, 整型 长整型 4 负数补码 普通整型 2 无符号位, 无符号 短整型 2 原码存储, 整型 长整型 4 值域大 单精度型 实型 双精度型 字符型 有符号 无符号 字符串 8 1 1 串长+1 4 型 值范围 -2 ~2 -1 -2 ~2 -1 0~2 -1
类型转换规则: 类型转换规则: 自动转换 强制转换
相关文档
最新文档