02 数据类型、运算符与表达式
c语言的数据类型、运算符和表达式
数据类型、运算符和表达式一、C 语言的基本数据类型数据是程序处理的对象。
C 中将数据分为不同的数据类型,任何数据都属于某一种特定的数据类型。
数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。
C 的数据类型分为基本数据类型和构造类型。
基本数据类型是系统定义的,用户可以直接使用。
构造类型由用户自行定义。
C 的数据类型如图所示。
C 标准没有规定各类数据所占用内存位数。
所以不同c 编译系统的各类数据所占用内存位数是不一样的。
上机使用时,应注意使用的c 编译系统的具体规定。
Turbo C 基本类型 所占位数 数的范围 [signed] char 8 -128~127 unsigned char 8 0~255 [signed]int 16 -32768~32767 short [int] 16 -32768~32767long [int] 32 -2147483648~2147483647 unsigned [int] 16 0~65535 unsigned short [int] 16 0~65535 unsigned long [int]320~4294967295C++数据类型基本类型字符型(char) 空类型(void)整型短整型(short int) 无符号整型(unsigned int)长整型(long int)基本整型(int) 实型(浮点型) 双精度型(double)单精度型(float) 指针构造类型枚举(enum) 联合(union)结构体(struct)数组float 32 约6位有效数字double 64 约12位有效数字在Visual C++中:char:1 Byteint:4 Byteshort:2 Bytelong:4 Bytefloat:4 Bytedouble:8 Byte二、常量常量:整型常量、实型常量、字符常量、字符串常量、符号常量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等
数据类型、运算符与表达式
6.1 一维数组
例6.4程序中第一个for语句逐个输入10个数到数组a中,然后把a[0]送 入max中。在第一个for语句中,a[1]到a[9]逐个与max中的内容比 较,若比max的值大,则把该下标变量送入max中,因此max在己 比较过的下标变量中总是为最大者。比较结束,输出的max值即 为10个整数的最大值。
2.5 字符型数据
2.5.1 字符常量
1.字符常量的定义 用一对单引号括起来的单个字符,称为字符常量。例如,'
A','6','+'等。 2.转义字符
C语言还允许使用一种特殊形式的字符常量,就是以反斜杠 “\”开头的转义字符,该形式将反斜杠后面的字符转变成另外的 意义,因而称为转义字符。
下一页 返回
第2章 数据类型、运算符与表达式
2.1 C语言的数据类型 2.2 标识符、常量和变量 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 算术运算与算术表达式 2.7 赋值运算与赋值表达式 2.8 自增、自减与逗号运算
2.1 C语言的数据类型
C语言提供有丰富的数据类型。其数据类型及其分类关系如 图2-1所示。
int i,max,a【10」; printf(”input 10 numbers:\n");
上一页 下一页 返回
6.1 一维数组
for(1=0;1<10;1++) scanf(”%d”,&a[i]);
max=a[0]; for(i=1;i<10;i++)
if(a[i]>max) max=a[i]; printf("maxnum=%d\n",max);
形பைடு நூலகம்输出。
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章数据类型,运算符与表达式参考答案及解析
参考答案及解析一、选择题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【解析】合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。
PASCAL语言的基本知识
标准函数
算术函数
标量函数
例: abs(-4)=4 abs(-7.49)=7.49 arctan(0)=0.0 sin(pi)=0.0 cos(pi)=-1.0 frac(-3.71)=-0.71 int(-3.71)=-3.0 sqr(4)=16 sqrt(4)=2
例: odd(1000)=false odd(3)true pred(2000)=1999 succ(2000)=2001 pred('x')='w' succ('x')='y'
类型数值范围占字节数有效位数 [Copy to clipboard] CODE: real 2.9e-39..1.7e38 6 11..12 single 1.5e-45..3.4e38 4 7..8 double 5.0e-324..1.7e308 8 15..16 extended 3.4e-4932..1.1e4932 10 19..20 comp -263+1..263-1 8 19..20 Turbo Pascal支持两种用于执行实型运算的代码生成模式:软件仿真模式和80x87浮点模式。
类型数值范围占字节数格式 [Copy to clipboard] CODE: shortint -128..128 1带符号8位 integer -.. 2带符号16位 longint -2^16~2^16-1带符号32位 byte 0..255 1带符号8位 word 0.. 2带符号16位 Turbo Pascal规定了两个预定义整型常量表识符maxint和maxlonint,他们各表示确定的常数值,maxint 为,
PASCAL语言的基本知识
计算机编程语言
01 程序组成
第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语言数据类型、运算符与表达式
大于等于运算符(>=):比较两个数 的大小,判断第一个数是否大于或等 于第二个数
小于等于运算符(<=):比较两个数 的大小,判断第一个数是否小于或等 于第二个数
等于运算符(==):判断两个值是否 相等
逻辑运算符
总结词
用于进行逻辑运算的符号
与运算符(&&)
判断两个条件是否同时为真, 返回真或假
或运算符(
逻辑表达式
总结词
逻辑表达式用于判断逻辑条件。
详细描述
逻辑表达式使用逻辑运算符(如“&&”、“||”、“!”)来组合或比较关系表达式,例如“a > b && c < d”表示a大于b且c小于d的逻辑条件。
位表达式
总结词
位表达式用于对二进制位进行操作。
详细描述
位表达式使用位运算符(如“&”、 “|”、“^”、“~”、“<<”、 “>>”)来对整数类型的变量进行位 运算,例如“a << 2”表示将a的二 进制表示向左移动两位。
THANKS
感谢观看
|):判断两个条件中至少有一个 为真,返回真或假
非运算符(!)
对一个条件取反,返回真或假
位运算符
):对两个数的二进制位 进行或操作
位或运算符(
对两个数的二进制位进行 与操作
位与运算符(&)
对二进制位进行操作的符 号
总结词
位运算符
位异或运算符(^)
对两个数的二进制位进行异或操作
右移运算符(>>)
将一个数的二进制位右移指定的位数
详细描述
算术表达式可以包含加法、减法、乘法、除法等基本数学运算,例如“a + b * c - d / e”。
精品课件-JAVA语言程序设计教程(张席)-第2章
第2章 数据类型、运算符、表达式和语句 程序运行结果如图2.3所示。
图2.3 一维数组应用举例
27
第2章 数据类型、运算符、表达式和语句 2.5 运算符与表达式
对各种类型的数据进行加工的过程称为运算,表示各 种不同运算的符号称为运算符,参与运算的数据称为操作数。 Java语言运算符如图2.4所示。
byte a=100;
//定义整型变量 a,且赋初值为 100
short b=1000; //定义整型变量 b,且赋初值为 1000
int c=10000;
//定义整型变量 c,且赋初值为 10000
long d=100000L; //定义整型变量 d,且赋初值为 100000
float e= 5.12f ; //指定变量 e 为 float 型,且赋初值为 5.12
char byte、short byte、short、int byte、short、int、long byte、short、int、long、float
int int long float double
17
第2章 数据类型、运算符、表达式和语句
2.3.2 强制类型转换
高优先级数据要转换成低优先级数据,需用到强制类型转换,
其转换格式为
(类型名)(数据或表达式)
例如:
int x;
short a=(short)x;
/*把int型变量x强制转换为short
型*/
18
第2章 数据类型、运算符、表达式和语句 2.4 数 组
2.4.1 数组的概念 数组是相同类型的数据按顺序组成的一种复合数据类型,通
过数组名加数组下标来使用数组中的数据,下标从0 开始。
21
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语言实验报告-实验二 数据类型、运算符和表达式
请编程序:当给出f时,求其相应摄氏温度和绝对温度。
测试数据:①f=34 f=100
答:①的程序为
#include <stdio.h>
main()
{
float f,c;
double k;
f=34;
c=5/9*(f-32);
k=273.16+c;
printf("c=%f,k=%lf\n",c,k);
x=r.cosθ
y=r.sinθ
测试数据:①r=10 θ=45° r=20 θ=90°
答:①的程序为
#include<stdio.h>
#include <math.h>
main()
{
float r,b,x,y;
r=10;
b=45;
x=r*cos(b/180*3.14);
y=r*sin(b/180*3.14);
答:该程序为
#include<stdio.h>
#define PI 3.14
main()
{
float r;
double s,c;
r=1.5;
s=PI*r*r;
c=2*PI*r;
printf("s=%.2lf,c=%.2lf",s,c);
}
(2)将华氏温度转换为摄氏温度和绝对温度的公式分别为:
(摄氏温度)
main( )
{int i=8,j=10,m=0,n=0;
m+=i++;n-=--j;
printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);
C语言-数据类型运算符和表达式
3/86
C程序常见符号分类
关键字(Keyword) – 又称保留字( C Reserved Word )
A word that has special meaning in C
标识符(Identifier) – C Standard Identifier(系统预定义标
识符)
A word having special meaning but may be redefined (but is not recommended!!)
习题2.2(4)字符串"\t\"Name\\Address\n"的长度?
– 15
2020/5/7
11/86
变量(Variable )
A name associated with a memory cell whose value can change – 其值在程序执行过程中是可以改变的 Properties of a variable – Name 变量名 – Type 变量类型 – Value 变量的值 – Address 变量的存储单元——地址
第2章 数据类型、运算符与表达式
思考
C程序的框架是什么样的? 如何编写程序实现,计算两个整数x=2,y=3的和,然后 显示器输出两个数相加的结果?
如何编写程序实现从键盘输入两个整数,然后显示器 输出两个数相加的结果?
2020/5/7
2/86
一个简单的C程序例子
#include <stdio.h>
unsigned – 用来修饰char、int、short和long – 无符号整数(正整数和0)
2020/5/7
24/86
不同类型取值范围不同
C语言直接提供的任何类型都有取值范围。
c语言-数据类型、运算符与表达式
c语⾔-数据类型、运算符与表达式⼀、数据类型1、概念(1)标识符1.定义:⽤来标记常量、变量、函数及⽂件名字的字符序列。
2.构成规则:只能由数字、字母、下划线三部分组成,且不能以数字开头,并且严格区别⼤⼩写,不能定义为系统中存在的关键字。
(2)关键字c语⾔中具有特定含义、专门⽤作语⾔特定成分的⼀类标识符注:在C语⾔中,所有的关键字都有固定的意义,不能⽤作其它,且所有的关键字都必须⼩写(3)c的数据类型数据是操作的对象,数据类型是指数据的内在表现形式(代码、存储、运算)(4)常量和变量1. 常量【1】常量:在程序运⾏过程中,其值不能被改变的量 常量区分为不同类型(表⽰形式),如:12、1.0、‘a’【2】符号常量:⽤⼀个标识符代表的⼀个常量定义⽅法:#define 标识符常量#define PRICE 30#include <stdio.h>void main(){int num,total;num = 10;total = num * PRICE;printf("total = %d",total);}2. 变量【1】变量:其值是可以改变的量,它⽤标识符(变量名)来表⽰,在内存中占据⼀定的存储单元变量的定义⽅法:类型符标识符注意事项:<1>见名知意 <2>先定义后使⽤ <3>习惯上,符号常量名⽤⼤写,变量名⽤⼩写,以⽰区别【2】变量赋初值变量先定义,后使⽤,⼀般放在函数开头变量初始化:可以在定义时赋初值2、整型数据(1)整型常量1. 各种进制的整数表⽰⽅法⼗进制整数:由数字0~9和正负号表⽰. 如 123,-456,0⼋进制整数:由数字0开头,后跟数字0~7表⽰. 如 0123,011⼗六进制整数:由0x开头,后跟0~9,a~f,A~F表⽰. 如 0x123,0xff2. 整型常量的类型【1】整型常量的值在-32768~+32767范围内,编译器认为是int类型【2】整型常量的值超过上述范围,⽽在-2147483648 ~ +2147483647范围内,编译器认为是long类型【3】当系统定义short int与int占内存长度相同,则两种类型常量均可以赋给 int和short int型变量【4】在整型常量后⾯加⼤写L或⼩写l,则告诉编译器,把该整型常量作为long类型处理。
数据类型、运算符和表达式实验报告
广州大学实验报告学院商学院专业、班级姓名、学号课程名称C程序设计项目名称数据类型、运算符和表达式实验实验时间:2012 年 3 月20 日数据类型、运算符和表达式实验报告开课实验室:2012年3月20日d=5.670000,e=-6.780000f=1234.567890,g=0.123457m=50000,n=-600000p=32768,q=40000第3页四、实验结果及分析实验一输出结果为:a,b值互换。
分析:在C程序设计中,两个值互换需要一个中间变量来储存数据,如果直接交换会导致其中一个数据丢失。
实验二分析:实验二为自己设计的程序。
在设计这个程序是要注意scanf的用法。
Scanf 为格式输入符,在输入字符时要注意字符输入方式。
在本次实验中其调用格式为:scanf("<格式化字符串>",<地址表>);实验三分析:输出格式的不同会导致输出结果的不同。
将负数赋值给无符号变量时,无符号变量会将这个负值的符号也纳入计算范围从而返回一个正值,导致最后输出结果不正确。
这个实验让我认识到在设计程序时要注意输出格式的选择。
实验四分析:实验四更加强调个语句中在程序的含义。
程序为:printf("d=% f,e=% f\n",d,e);printf("f=% f,g=% f\n",f,g);输出结果为:当程序改为:printf("d=%-6.2f,e=%-6.2f\n",d,e);printf("f=%-15.6f,g=%-15.10f\n",f,g);输出结果为:继续将程序改边为:printf("d=%-6.2f\te=%-6.2f\n",d,e);printf("f=%-15.6f\tg=%-15.10f\n",f,g);输出结果为:以上3种都是改变了输出格式使输出数据的有效数字改变。
C++ 第02章 数据类型、运算符和表达式
已知 a=0, b=5 则 a&&b 的值是 0 则 a||b 的值是 1 则 !a&&b 的值是 1
注意: 在C++程序中, 欲表示数学关系 0≤x≤10 , C++的逻辑表达式必须写成 0<=x && x<=10, 而不能写成 0<= x <=10。
为什么?
2.4.6 位运算符和位运算表达式 位运算是对整型数据的运算(可以操作到位), 符号位参与运算, 主要用于系统程序设计。 位运算符共有6 种: 它们是:按位与(&) 按位或(|) 按位异或(^) 按位取反(~) 左移(<<) 右移(>>)
第二部分 面向对象的程序设计
第2章
数据类型、运算符与表达式
[例1.1]一个简单的C++程序
#include <iostream.h> void main( void ) C++ 程序的构成: { (1)数据描述 int num, square ; cout << "num=" ; (2)执行步骤( 算法) cin >> num ; square = num*num; cout << "num的平方为:" << square << '\n'; }
注意:int 型变量与 unsigned int 型变量的区别 32 位
int 型: (补码)
符号位 32 位 unsigned int 型: 无符号位
范围 -231~ (231 - 1) 范围 0~ (232 - 1)
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. 3】整型数据的溢出 #include <stdio.h> 运行结果: int main(void) 若用Turbo C2.0编译器,其结果为: { X=32767,y=-32767 int x,y; 若用Visual C++6.0编译器,其结果为: x=32767; X=32767,y=32769 y=x+2; printf("x=%d,y=%d\n",x,y); return 0; } 这是由于Turbo C2.0的整型数据占2个字 Company Logo 节, Visual C++6.0的整型数据占4个字节
第2章 数据类型、运算符和表达式
本章内容
1
2 3
C语言的标识符和关键字
C语言的基本数据类型
运算符和表达式
4
数据的输入输出
Company Logo
学习目标
1
2 3 4 5 5
掌握C语言的标识符和关键字 掌握C语言的基本数据类型 掌握不同数据类型的转换
掌握各种运算符的使用方法及其优先级和结合性
掌握字符数据输入输出函数getchar和putchar的用法 掌握字符数据输入输出函数getchar和putchar的用法
\r \f \\ \' \" \a 回车 走纸换页 反斜杠字符'\' 单撇号字符 双撇号字符 报警,相当于’\007‟ 字符形式 功 能
\ddd
\xhh
1~3位8进制数所代表的字符
1~2位16进制数所代表的字符
演示
Company Logo
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
02 数据类型、运算符与表达式2.1 C 的数据类型一个程序应包括以下两方面内容:⑴对数据的描述,在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure )。
⑵对操作的描述,即操作步骤,也就是算法(algorithm )。
数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。
程序 = 数据结构 + 算法算法是解决“做什么”和“怎么做”的问题。
程序中的操作语句,实际上就是算法的体现。
算法处理的对象是数据,而数据是以某种特定的形式存在的。
数据结构指的是数据的组织形式。
C 语言的数据结构是以数据类型形式出现的。
整型指针类型数据类型基本类型字符型浮点型枚举类型构造类型数组类型结构体类型共用体类型空类型单精度型双精度型C 语言中数据有常量与变量之分。
在程序中对用到的所有数据都必须指定其数据类型。
2.2 常量与变量2.2.1 常量和符号常量在程序运行过程中,其值不能被改变的量称为常量。
常量区分为不同的类型,如12, 0, -3为整型常量,4.6, -1.23为实型常量,'a', 'd'(单引号内一个字符)为字符常量。
用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符(identifier )。
简单地说,标识符就是一个名字。
C 语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
大写字母和小写字母被认为是两个不同的字符(大小写敏感)。
为了程序的可移植性以及阅读程序的方便,建议标识符的长度不要超过8个字符。
在选择标识符时,应注意做到“见名知意”,即选有含意的英文单词(或其缩写)作标识符(匈牙利命名法)。
用一个标识符代表一个常量,如:例2.1 符号常量的使用。
#include "stdio.h"#define PRICE 30main(){int num, total;num = 10;total = num * PRICE;printf("total = %d\n", total);}程序中用#define 命令行定义PRICE 代表常量30,此后凡在本程序源代码中出现的PRICE 都代表30,可以和常量一样进行运算。
这种用一个标识符代表一个常量的,称为符号常量,即标识符形式的常量。
它的值在其作用域内不能改变,也不能再被赋值。
符号常量一般用大写字母表示。
使用符号常量的好处是:⑴含义清楚;⑵在需要改变一个常量时能做到“一改全改”。
2.2.2 变量其值可以改变的量称为变量。
一个变量有一个名字,在内存中占据一定的存储单元。
在该存储单元中存放变量的值。
变量名和变量值这两个不同的概念,见图2.1。
变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存(逻辑)地址。
在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。
图2.1变量名和变量值变量名一般用小写字母表示。
在 C 语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”,这样做的目的是:⑴凡未被事先定义的,不作为变量名,保证程序中变量名使用得正确;⑵每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元;⑶指定每一变量属于一个类型,便于在编译时据此检查该变量所进行的运算是否合法。
2.3 整型数据2.3.1 整型常量的表示方法整型常量即整型常数。
C 整型常数可用以下三种形式表示:⑴十进制整数。
⑵八进制整数,以0 开头的数是八进制数。
如0123 表示八进制数123。
⑶十六进制整数。
以0x 开头的数是十六进制数。
如0x123,代表十六进制数123。
2.3.2 整型变量1. 整型数据在内存中的存放形式数据在内存中是以二进制形式存放的。
在微机上使用的C 编译系统,每一个整型变量在内存中占2个字节。
数值在内存中是以补码形式表示的。
一个正数的补码和其原码的形式相同。
负数的补码:将该数的绝对值的二进制形式,按位取反再加1。
例如求-10的补码,见图2.3。
图2.3负数的补码整数的16位中,最左面的一位是表示符号的,该位为0,表示数值为正;为1则数值为负。
2. 整型变量的分类C 一共有6种整型变量:有符号基本整型[signed] int无符号基本整型unsigned int有符号短整型[signed] short [int]无符号短整型unsigned short [int]有符号长整型[signed] long [int]无符号长整型unsigned long [int]方括号内的部分是可以省略不写。
如果不指定unsigned 或指定signed,则存储单元中最高位代表符号(0为正,1为负)。
如果指定unsigned,为无符号型,存储单元中全部二进位(bit)用作存放数本身,而不包括符号。
无符号整型变量只能存放不带符号的整数,而不能存放负数。
一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。
C 标准没有具体规定以上各类数据所占内存字节数,只要求long 型数据长度不短于int 型,short 型不长于int 型。
具体如何实现,由各计算机系统自行决定。
3. 整型变量的定义对变量的定义,一般是放在一个函数开头的声明部分。
例2.2 整型变量的定义与使用。
#include "stdio.h"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);}不同种类的整型数据可以进行算术运算。
在本例中是int 型数据与unsigned int 型数据进行相加相减运算。
4. 整型数据的溢出在Turbo C 中一个int 型变量的最大允许值为32767,如果再加1,会出现什么情况?例2.3 整型数据的溢出。
#include "stdio.h"main(){int a, b;a = 32767;b = a + 1;printf("%d, %d\n", a, b);}图2.6整型数据的溢出从图 2.6 可以看到:变量 a 的最高位为0,后15位全为1。
加1后变成第1位为1,后面15位全为0。
而它是-32768的补码形式,所以输出变量b 的值为-32768。
请注意:一个整型变量只能容纳-32768~32767范围内的数,无法表示大于32767的数。
遇此情况就发生“溢出”,但运行时并不报错。
从这里可以看到:C 的用法比较灵活,往往出现副作用,而系统又不给出“出错信息”,要靠程序员的细心和经验来保证结果的正确。
2.3.3 整型常量的类型一个整型常量后面加一个字母u,则认为是unsigned int 型。
如12345u,在内存中按unsigned int 规定的方式存放。
如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。
在一个整型常量后面加一个字母l或L,则认为是long int 型。
例如123l、432l 等。
2.4 实型数据2.4.1 实型常量的表示方法实型常量即实型常数、实数(real number)、浮点数(floating-point number)。
实数有两种表示形式:⑴十进制小数形式。
它由数字和小数点组成。
⑵指数形式。
如123e3 或123E3 都代表123×103。
字母e(或E)之前必须有数字,且e后面的指数必须为整数。
一个实数可以有多种指数表示形式。
“规范化的指数形式”即在字母e(或E)之前的小数部分中,小数点左边应有一位且只能有一位非零的数字。
例如 1.23e5。
一个实数在用指数形式输出时,是按规范化的指数形式输出的。
2.4.2 实型变量1. 实型数据在内存中的存放形式在常用的微机系统中,实型数据是按照指数形式存储的。
系统把一个实型数据分成小数部分和指数部分,分别存放。
指数部分采用规范化的指数形式(移码)。
2. 实型变量的分类C 实型变量分为单精度(float)、双精度(double)和长双精度(long double)三类。
3. 实型数据的舍入误差由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去。
由此可能会产生一些误差。
例如,a 加20的结果显然应该比 a 大。
请分析下面的程序:例2.4 实型数据的舍入误差。
#include "stdio.h"main(){float a, b;a = 123456.789e5;b = a + 20;printf("%f\n", b);}程序内printf 函数中的“%f”是输出一个实数时的格式符。
程序运行时,输出 b 的值与a 相等。
原因是:a 的值比20大很多,a + 20的理论值应是12345678920,而一个实型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确地表示该数。
应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数。
2.4.3 实型常量的类型C 编译系统将实型常量作为双精度来处理,这样做可以保证计算结果更精确,但是运算速度降低了。
可以在数的后面加字母 f 或F,编译系统就会按单精度(32位)处理。
一个实型常量可以赋给一个float 型、double 型或long double 变量。
根据变量的类型截取实型常量中相应的有效位数字。
2.5 字符型数据2.5.1 字符常量C 的字符常量是用单引号括起来的一个字符。
如'a', '?' 等都是字符常量。
注意,'a' 和'A' 是不同的字符常量。
C 还允许用一种特殊形式的字符常量,就是以一个“\”(反斜杠)开头的字符序列。
例如在printf 函数中的'\n',它代表一个“换行”符。
这是一种“控制字符”,称为“转义字符”,在屏幕上是不能显示的,在程序中也无法用一个一般形式的字符表示,只能采用特殊形式来表示。
例2.5 转义字符的使用。
#include "stdio.h"main(){printf(" ab c\t de\rf\tg\n");printf("h\ti\b\bj k\n");}程序中没有设字符型变量,用printf 函数直接输出双引号内的各个字符。