C语言第二讲数据类型2

合集下载

第2章 c语言基本数据类型、运算符和表达式

第2章 c语言基本数据类型、运算符和表达式
负整数的补码是①将此数绝对值的二进制形式(原码);②除最高位符号位外其他数取反 (反码);③加1(补码)。 -5的补码:
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语言第2讲--数据的表示之基本数据类型

C语言第2讲--数据的表示之基本数据类型
29
5.字符输出举例
例3.7(P51) main() 运行结果:A,B { char a,b; 65,66 a='a'; b='b'; /*或 b=98;可向字符变量赋以整数 */ a=a-32; b=b-32; printf("%c,%c\n%d,%d\n",a,b,a,b); } 注:C语言允许字符变量参与数值运算,即用字符 的ASCII 码参与运算。 大小写字母的ASCII 码相差32,因此运算后把小写 字母换成大写字母
结果:total1=300 total2=600
6
二、变量
变量以标识符命名。 变量的定义: 类型名 标识符1,标识符2,......标识符n; int a,b,c; float x,y,z;
注意事项:
/* a,b,c 为整型变量 */ /* x,y,z 为单精度型变量 */
(1)
(2)
变量必须先定义后使用
double a1,a2; a1,a2为double型变量名,每个 变量占8个字节的空间
20
3.浮点型数据的格式输出
#include <stdio.h> /*可省 */ void main() { float a=123.456; double b=1234.5678; printf(“a=%f\n”,a); printf(“b=%f\n”,b); }
输出结果: a=123.456001 b=1234.567800
21
4.printf( )函数中浮点型数据的输 出格式符(自阅)
%f :按小数形式输出实数(包括双精度),默认保留6位
小数。
%e(=%E):按指数形式输出实数(包括双精度) ,尾数 部分默认保留6位有效数字。 %.3f:按小数形式输出实数,保留3位小数。 %8.3f :按小数形式输出实数,保留3位小数,数据总宽

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,可以和常量一样进行运算

C语言学习第二章数据类型

C语言学习第二章数据类型
基本整型:表示范围为0~0177777。 ③十六进制数:
基本整型:表示的范围为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. 等均为合法的实数。

第02章基本数据类型

第02章基本数据类型

scanf("%f", &r);
/*输入某圆的半径*/
/*PI=3.1415926;此句错误,不能通过编译,因为PI是
符号常量,不能重新赋值。*/
area=PI*r*r;
/*计算该圆的面积*/
printf("\nThe area of the circle is:%f", area); /*输出
该圆的面积*/
0000001101101100
图2-2 876在内存中的表示来自212.3 整型—整型变量
无符号整型将所有的位均表示为数据,因此只有 正数形式。有符号的整型将最高位用做符号位, 最高位为“1”表示负数,为“0”表示正数。
22
数据在内存中是以二进制形式存放的。实际上,数 值是以补码表示的。
(1) 对于正数,原码 = 反码 = 补码。 (2) 对于负数,补码 = 反码 + 1。 (3) 引入补码后,使减法统一为加法。
C语言中的关键字有(共32个): auto、break、case、char、const、continue、d efault、do、double、else、enum、extern、flo at、for、goto、if、int、long、register、ret urn、short、signed、sizeof、static、struct、 switch、typedef、union、unsigned、void、vol atile、while。
(1)十进制整常量:其各位数为0~9,但最高位 不能为0(除了0这个数字外)。例如,22,0,-5 6等是合法的十进制整常数;而01、726C不是十进 制整常数。
(2)八进制整常量:八进制整常量必须以数字0 开头,即以0作为八进制数的前缀。各位数取值为 0~7。

C语言基本数据类型

C语言基本数据类型

0.0314159 +2
数字部分 指 数 (尾数) (阶码)
<
字符常量
• 定义:用单引号括起来的单个普通字符或转义字符.
例转义••转字字转义符符义字转常字符义量符举字的:例反符如值含(斜c及义:h‘线2其该_a后0含’字0面1义符.‘cA跟:,的c’h一转A2‘?S_个义C0’字I0字I4符‘码.符\cn)值或’ 一‘\1个01代含’ 码义值表示 m{} \\\\\vnaar‘ppppirrrrniiii<(nnnn)如ttttffff((((""""IT\\‘‘‘例1\Cu\\s036例‘a如r\1A70{}垂Py1bm6’单’:\:0or-x直’\换回响1oa-"引4-\p-’gi-‘‘'制H-行车铃-2nCr--r号---i(-oa表-C-A0\n-)--'-wm-’’’-"t\--\——-nf--1)\-(a--";\-“0--\r——--)n-Y1e--;’-’"’0\64-y-b)’--58o;‘-=,Au-’\-,?n’--\”\\\"’‘‘\\tfb‘‘)\\“\\\\x;nx4n‘a4\68"’’10—13—)’1;’’-2—-—--’运 AI\T--Cs-u--1-运 屏 打a9B-行--rP0-y-7--b--行 幕 印--:rC结,o--”-6o---H结显机5g--果‘-C---or水--果示输(a:’w--m’-退换反双平::出)a-(a屏\-’r格页斜引制’:=e\幕n线号表¥y’显ou示?”)
{
in•t可i =用0;sizeof(类型标识符)测量
printf ("char: %d bytes.\n",sizeof(char));

[工学]C语言第2讲 基本数据类型

[工学]C语言第2讲 基本数据类型

\ddd
8进制数表示的ASCII码对应的字符
\xhh
16进制数表示的ASCII码对应的字符
02:42
转义字符的应用
例2-1 用转义字符输出可打印字符和不可打印字 符。
/*ex201.c*/
#include <stdio.h>
main()
{
printf(“\x4F\x4B\x21\n”); printf(“\x15 \xAB\n”);
02:42
3、数据基本形式
在实际数据处理过程中,有些数据经常 变化(大批量),而有些数据不变化 (个别)。
变化的量称变量,不变化的量称常量。 常量和变量是计算机语言中数据的两种 基本形式。
常量和变量的运算规则是有区别的。
02:42
4、C语言的数据类型
数据类型
基本类型
构造类型 指针类型 空类型
号、声音、图象、影视信息等。 是程序的必要组成部分和程序处理的对象。
02:42
2、数据类型(Data Type)
计算机只能存放二进制数据。不同类型的事物如何 区分和描述?由此产生数据类型。
不同类型的数据占据不同长度的存储单元。 不同类型的数据对应不同的值域范围。 不同类型的数据对应不同的操作(运算)及规则。 数据类型越丰富,求解能力越强大。
十进制小数
e(或E)
十进制数整数
注意:字母e(或E)之前必须有数字,且e(或E)后面的指数必须为整数。 02:42 如:e3,2.1e3.5,.e3,e等都不是合法的指数形式。
a. 一般指数形式 例:123.456可表示为: 123.456e0,12.3456e1,1.23456e2,0.l23456e3
02:42

C语言程序设计 第2章 数据类型

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);

第02章 数据类型—基本类型

第02章 数据类型—基本类型

2.3 整型数据
2.4.2 整型常量 1.三种表示形式 整型常量即整常数,在C语言中可用三种形式表示: (1)十进制。例如10、36。 (2)八进制(以数字0开头)。例如012。 (3)十六进制(以数字0+小写字母x开头)。例如0x36。 2.分类 (1)基本整型。在16位机中,用2字节存储,其数据范 围与int型变量一样。 (2)长整型(在数值后面加“L(l)”)。对超出基本 整型值域的整型常量,可使用长整型常量表示,其取 值范围可达-231-(231-1)。例如,123l、315L 等。
2.3 整型数据
2.4.3 变量定义及整型数据在内存中存放形式 变量定义,即指定程序中所用变量的类型,一般放在 函数体的开头部分。根据变量定义,系统按其类型为 其分配内存。如: int a,b; /*定义a、b为整型变量*/ unsigned long c,d; /*定义c、d为无符号长整型变量*/ a=10; /*给a赋值10,即把10存放在a的内存中*/ 在计算机内存中,所有数据、信息和指令都是用二进 制编码的。十进制10的二进制形式为1010,每个整型 变量占2个字节的内存。
2.1 C语言的数据类型
C语言提供的数据结构,是以数据类型形式出现的。具 体分类如下:
1.基本类型 分为整型、实型(又称浮点型)、字符型 基本类型
和枚举型四种。
2.构造类型 分为数组类型、结构类型和共用类型三种。 构造类型 3.指针类型 在第9章中介绍。 指针类型 4.空类型 空类型
C语言中的数据,有常量和变量之分,它们分别属于上 述这些类型。 本章将介绍基本类型中的整型、实型和字符型三种数据。
2.3 整型数据
十进制(程序中) 10 二进制(内存中) 00000000 00001010

2 C语言 第二章数据类型、表达式

2 C语言 第二章数据类型、表达式

说明
在整型常量尾部加上字母1或 时 在整型常量尾部加上字母 或L时,则 表示长整型常量.比如: 表示长整型常量.比如:18L或18l 或 整型(int)常量的值在 32768~32767之间 常量的值在 整型 之间 长整型(long int)常量的值在 长整型 常量的值在 2147483648 ~ 2147483647之间 之间
三位八进制 001 000 001 二进制 ( (用十进制表示为65) 65)
A' 如 \ 101 –– 表示字符'A' 又: \ x hh
用1到2位16进制数表示的 到 位 进制数表示的 进制数表示的ASCII码对应的字符 码对应的字符
如 \ x 41–– 表示字符'A'
0100 0001 二进制 (用十进制表示为65)
注意: 注意: 实型变量的有效数字的长度视机器而定 例如: 例如: pc机, 单精度一般为7位, 双精度15位 于是: float a; a=123456.789 则实际赋值a←123456.7 单精度表数范围: 单精度表数范围 10–38~1038 双精度表数范围: 双精度表数范围 10–308~10308 实数可以赋给float或double型变量.
对于较大或较小的数,可用指数形式 0.0000126 1260000 1.26E –5 1.26E+6 或1.26E6
' E ', 'e ' 均可, 表示以10为基数.E或e之前必须要 有数字,称为尾数部分或数码部分.规范化的尾数是将 小数点固定在第一位有效数字之后.ddd称为指数,指数 最多可达3位整数.
2.4.2 实型变量
分为单精度型 双精度型 单精度型与双精度型 单精度型 双精度型. 例如: 例如: float x, y, z ; 定义x, y, z为单精度变量. double a, b, c ; 定义a, b, c为双精度变量. 一般地: 单精度占4字节内存单元 字节内存单元; 一般地 单精度占 字节内存单元 双精度占8字节内存单元 双精度占 字节内存单元. 字节内存单元

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语言第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章数据类型、运算符与表达式

C语言教程第2章数据类型、运算符与表达式
const float pi = 3.1425926;
常量只能在定义时赋值,然后不能再改变 其值 常数、 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章基本数据类型

《新概念C语言能力教程》第2章基本数据类型
• int型用d,short型用hd,long型用ld,unsigned int型用u,unsigned short型 用hu,unsigned long型用lu。
• 其中的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语言的基本数据类型

标识符的有关规定:只能由字母、数字和下划线 组成,且第一个字符必须是字母或下划线;字母区分 大小写;不同的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章 数据类型、运算符与表达式

C语言知识点:第2章 数据类型、运算符与表达式
C 语言程序设计知识点
主讲教师:杨剑
第 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章 数据类型、常量、变量、运算符与表达式

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言第二讲C语言的基础知识版本:v2011.0.1 教学内容:1、Makefile的原理与使用2、printf格式化输出和sizeof()。

3、常量的使用目的4、指针变量指向一个地址,为什么要定义指针变量的数据类型呢?5、指针+1的计算方法6、结构体的含义和使用技巧教学重点:1、创建Makefile文件,快捷编译C语言程序2、printf与sizeof3、数组与结构4、for,while,do..while课后作业:1、用整型和字符型数据两种方法输出00 01 (09)10 11 (19)……90 91 (99)2、用数组和结构体数据类型初始化五个人的学号,姓名,单科成绩[3],,然后求出总分,名次,最后按总分由高到底(总分最高名次为1)输出如NO. Name cj1 cj2 cj3 sum mingci教学过程:教学目标一:在ubuntu中怎么开始编写和编译C语言1、使用gedit编写C语言程序分析一个简单的C语言程序:test1.c。

#include <stdio.h>main(){printf("Hello C!");}建议:统一在主文件夹中进行文件创建。

2、程序的编译执行编译的方法:1、gcc test1.c -c test1.o//用gcc编译test1.c生成一个名为test1.o的链接文件。

2、gcc test1.o -o test1 //用gcc编译test1.o生成一个名为test1的可执行文件。

这里只有一个test1.c的文件,如果是一个工程呢?会包含多个.c的文件,如果用gcc我们需要每次编译时都要把修改的程序手动编译,如果用make,则可以加快编译速度,缩短时间。

就像是windows中的批处理文件。

gcc -v查看gcc的版本号:这个对于以后编译后的程序有关系2、Makefile的用途:Makefile带来的好处就是——―自动化编译‖或者说―批处理编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make是一个命令工具,是一个解释Makefile中指令的命令工具,Makefile是make的默认名,也可以使用其他名称,例如mak,使用的时候使用make -f mak。

先来看一个简单实例:在刚才的那个文件中新建一个文件,名为Makefile(注意没有扩展名),打开后输入如下:test1: test1.c //反映依赖关系,不一定所有的操作都有依赖关系gcc test1.c –o test1 编译方式第行,test1代表的编译完成后的程序名,―:‖后的表示该程序依赖的源程序是test1.c;第行指利用gcc进行编译。

test1: test1.cgcc test1.c -o test1test2: test2.cgcc test2.c -o test2clean: //不需要依赖其他rm -f test1如果要执行clean,可输入make clean自动识别程序是否进行了修改,依据的时间关系。

后面的课程中还会讲到更多与Makefile相关的知识,以后进一步加深。

p rintf:格式化打印1、%d,%c,%f,%p,%x,%o,%s,%03d,%6.3d,%-5d#include<stdio.h>void main(){int a,b,*p;char m,n[9]={'c','o','m','p','u','t','e','r'};float f;a=10,b=10,p=&a;m='c';f=10.0219;printf("a=%d\n b=%x\n p=%p\n",a,b,p);Printf("%d\n",*p);printf("m=%c\n m=%d\n n=%s\n",m,m,n);printf("a=%03d\n",a); //表示不足3位时在前面补0printf("a=%-6d\n",a); // "-"表示左对齐printf("f=%f\n",f);printf("f=%6.3f\n",f); //6.3指包含小数点共6位,其中小数部分3位,如果大于3位,会自动四舍五入。

}输出多个数的对应关系换行问题八进制十进制十六进制举例:#include <stdio.h>int main(){int i;printf("i=%d\n",015);printf("i=%x\n",015);printf("i=%o\n",015);printf("-----------\n");printf("i=%d\n",15);printf("i=%x\n",15);printf("i=%o\n",15);printf("-----------\n");printf("i=%d\n",0x15);printf("i=%x\n",0x15);printf("i=%o\n",0x15);}常量#define pi 3.14#define x 2+3 //会计算x=5吗?常量是指在程序中它的值不允许被修改。

define定义的常量开始时没有占用内存空间,当在程序编译时时,就会把定义的值代替常量的名称。

常量的好处有两点:1、提高了程序的可读性2、便于修改,如果有很多处相同需要修改,最好先定义为常量。

3、但是注意define定义的常量没有数据类型,因此在使用时要注意,比如:printf(“%d\n”,x*x),这个结果应该是多少呢?可能大家会觉得x为2+3,就是5,5*5应该是25,实际上是这样吗?我们测试一下。

结果不是25,而是11,出现这种情况的原因是因为在替换时,是把2+3替换为x,变成了2+3*2+3=11。

可以重新定义一下改成#define x (2+3),这样就对了。

操作符sizeof(数据类型)非指针变量类型及取值范围,引入操作符sizeof,返回数据类型占用内存空间的大小,对以后学习嵌入式编程的底层结构有帮助1、int:整型,sizeof(int)=42、unsigned int:无符号整型,size of(unsigned int)=43、short int:短整型,sizeof(short int)=24、unsigned short int:无符号短整型,sizeof(unsigned short int)=25、long int:长整形,sizeof(long int)=46、unsigned long int:无符号长整形,sizeof(unsigned long int)=47、float:浮点型,sizefo(float)=48、double:双精度浮点型,sizeof(double)=89、char:字符型,sizeof(char)=1构造类型数组:数组在内存中开辟了一个存储同一数据类型的连续的存储空间定义数组:char arr[5]注意:1、数据名arr表示数组开始的地址。

2、读取数据中的数据方法是:arr[下标]。

3、下标是从0开始,所以数组中的第一个是arr[0]。

数组赋值1、char arr[5]; //先定义后赋值可以吗?arr[5]={'h','e','l','l','o'};2、arr[0]='h';……arr[4]='o';3、char arr[6]="hello"; //最后有一个"\0"表示字符串结束位分析:求arr[5]的sizeof和输出arr[5]int main(){char arr[5];for(i=0;i<5;i++){printf("%c",arr[i]);}printf("%s\n",arr);printf("%d\n",sizeof(arr));printf("%d\n",sizeof(arr[0]));}指针类型指针类型如int *p1,p1为一个指向整型的指针变量,p1中存放的是一个地址,int则表示该指针指向的是一个整数型的数据。

如指针存放的是一个地址,为什么要定义指针的数据类型呢?假如下面是数组在内存中的存放Arr1[1] Arr2[7] Arr2[6] Arr2[5]p1+1 Arr2[4]Arr1[0]Arr2[3]Arr2[2] p2+1 Arr2[1]p1 p2 Arr2[0]请问*p1和*p2的结果分别是什么?*p1=1,*p2=1,这两个1相同吗?显然不同,一个是整数型,占4个字节,一个是字符型,占一个字节。

请问*p1+1和*p2+1呢?根据什么可以找到p1+1和p2+1呢?根据的就是指针变量所指向的数据类型。

如果不定义指针的数据类型,那么我们在取值时就不知道指针的下一个地址指向的数据怎么取值了。

分析程序:#include <stdio.h>int main(){int arr1[8]={1,2,3};int *p1=arr1;char arr2[8]={'1','2','3','4','5','6'};char *p2=arr2;printf("arr1=%p p1=%p p1+1=%p\n",arr1,p1,p1+1);printf("arr2=%p p2=%p p2+1=%p\n",arr2,p2,p2+1);printf("*p1=%d\n",*p1);printf("*p2=%c\n",*p2);printf("*(p1+1)=%d\n",*p1+1);printf("*(p2+1)=%c\n",*p2+1);}结构体有时我们需要将不同类型的数据组合成一个有机的整体,以便于引用,这些组合在一个整体中的数据是互相联系的,例如描述一个人有姓名,性别,年龄等。

相关文档
最新文档