文档介绍:第2章 C语言基础
C 语言程序设计
2
本章主要内容
本章介绍C语言的基础,包括:
数据类型
运算符和表达式
均是程序设计的基本知识
为什么讨论这些知识?
通常程序要对数据进行操作处理:
处理的对象是数据
通过运算符和表达式进行操作
3
例如:
【】计算圆的面积,半径为 5 cm。
程序如下:
main( )
{ float r, area ;
r=5 ;
area=*r*r;
printf ("%f\n ", area) ;
}
运算结果是输出圆的面积:
程序中用到的数据:r、area、5、
对数据进行的运算:* 、=
例jc2_1
4
分析:
计算机操作处理时,要完成以下工作:
在内存中给半径 r 和运算结果 area 开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值?
数据 5 和 与 r 、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理?
对整数 5 ,计算机存放时是否有区别?
涉及数据类型
的基本知识
5
C语言的数据类型
C数据类型
数组类型
结构体类型
共用体类型
枚举类型
整型
字符型
实型(浮点型)
空类型
单精度型
双精度型
基本类型
指针类型
构造类型
本章讨论
基本类型数据
6
整型数据
基本整型数据 int ,分配 2 Byte
短整型数据 short int,分配 2 Byte
长整型数据 long int,分配 4 Byte
整型数据均以二进制补码形式存储
问题:
为什么要采用补码?
如何表示?
7
计算机中正、负数的表示
例如:109 =(1101101)2
要区别:+109 和-109
方法是:将符号也数码化
即: 正的符号+用 0 表示
负的符号-用 1 表示
∴计算机中的数表示方法是:
符号位+二进制数值(以 8bit 为例)
+109 →+110 1101 → 0110 1101
-109 →-110 1101 → 1110 1101
8
进制转换问题
二、八、十六进制
除以2取余数,直至1为至,将余数序列到过来即可。
练习将58转换为二进制、八进制、十六进制?
58= 11010 B
58=72 O
58=3A H
思考17、21转换为二进制?
不妨做加法,17=16+1=10001,21=16+5=10101
记住常用2的幂,23=8, 24=16, 25=32, 26=64,
27=128, 28=256, …, 215=32768
216=65536
9
进制转换问题
2. 二、八、十六进制十进制
各位数字*2(或8、16)的权重幂之和
即(1011)2=1*23+0*22+1*21+1*20 = 11
练习(1101)2、(54)8、(4F)16转换为十进制?
1101B=13
54O=44
4FH=79
思考(1111)2转换为十进制?
不妨做减法,(1111)2=10000-1=16-1=15
记住常用2的幂,23=8, 24=16, 25=32, 26=64,
27=128, 28=256, …, 215=32768
216=65536
10
问题:计算机计算复杂化
例如计算: (-19)+(+22)
1001 0011 + 0001 0110
解决的方法是:
使用反码或补码的表示方法(按前述表示的编码称为原码),即能将减法一律转换为加法。
需要判断符号是否相同:
如果相同,结果符号不变,并进行绝对值相加
如果不同,结果取绝对值大的数的符号,并进行绝对值相减