2020/4/201第1章C语言基础知识一、C语言程序的基本构成和格式二、标识符(三类)三、C语言的数据类型四、整型数据五、实型数据六、字符型数据七、字符串常量八、数据类型的隐式转换九、表达式2020/4/202一、C语言程序的基本构成和格式注:(1)C程序由函数组成,分两种类型:单框架结(只有一个main函数)、复合框架(一个main+1个或多个用户自定义函数)。(2)程序中主函数main()有且仅有一个,可以有多个用户自定义函数。程序的执行是从主函数开始并且也从主函数结束。(3)函数名后面的()与{}是标记;函数体中可以没有语句。(4)函数体内通常有两部分:变量说明部分、语句执行部分。说明部分必须在执行部分前面。2020/4/203一、C语言程序的基本构成和格式注:(5)C程序中的每一条执行语句都必须用分号(;)结束。分号是语句不可缺少的一部分,是语句结束的标记。(6)C语言程序的书写可以很灵活。一条语句可以分多行写;多行语句也可以写在一行。但不能将一个整体分开写。(7)注释部分必须用符号“/*”、“*/”括起。而且两者必须要配对,“/”和“*”之间不能有空格。注释之间不能再嵌套。如:/*/*……………….*/*/程序执行时对注释是视而不见。2020/4/204二、标识符(三类)1、保留字(关键字):共32个,在C语言中代表着固定的含义,不能再做为它用。如:intfloatcharifelsefor2、预定义标识符:在C语言中预先定义并具有特定含义的标识符。如库函数名和预编译命令。scanfprintfinclude3、用户自定义标识符:由用户根据需要定义的标识符。如:变量名、数组名、函数名等。2020/4/205二、标识符(三类)注:(1)用户自定义标识符,如与关键字相同,则系统将出错;如与预定义标识符相同,系统不报错,但预定义标识符将失去原定含义。(2)标识符只能由字母、数字、下划线组成,而且第一个字符必须是字母或下划线。(3)在C程序中大小写字母是严格区分的。如intINTsumSUM,C语言程序中主要使用小写。如:合法的标识符:a_12_ab_12a12IFDo不合法的用户自定义标识符:3mdoifaa.txtc#bc2020/4/206补充:数制转换1、二进制转换为十进制()2=()10二进制有效数字是:0~1规则:乘权相加。从小数点往左边,第一位(个位)的权指是0,第二位的权指是1,第三位的权指是2………,小数部分的权指:小数位的第一位的权指是-1,第二位的权指是-2,………..。各位数乘以相应的权以后再相加,结果就是相应的十进制数。(10111.101)22、十进制转换为二进制()10=()2规则:整数部分倒除2反取余数;小数部分乘2顺取整数.。(31)10=()2(0.8125)10=()2(31.8125)10=()22020/4/207补充:数制转换3、二进制转换为八进制()2=()8八进制有效数字:0~7规则:从小数点往两边每三位二进制数转换成一位与其相应的八进制数(不足的补0)(11010100)2=(324)8(0.10111101)2=(.572)84、八进制转换为二进制()8=()2(7012)8=(111000001010)25、二进制转换为十六进制()2=()16十六进制有效数字:0~9、A、B、C、D、E、F(1011,1011,1000,0010)2=()166、十六进制转换为二进制()16=()22020/4/208补充:数制转换7、八进制、十进制、十六进制之间的相互转换八进制、十六进制=》十进制十进制=》八进制、十六进制利用二进制进行过渡作业:(58)10=()8(153)8=()10(516)8=()16(2E3.25)16=()8(213)10=()168、位、字节、字长位(bit):由单一的一位二进制数构成,它是计算机中数据的最小表示形式。字节(Byte):由八位连续的二进制位组成,它是计算机内存中存储单元的基本单位8位=1字节1024字节=1KB1024KB=1MB1024MB=1GB1024GB=1TB2020/4/209三、C语言的数据类型:分为四大类:基本类型、构造类型、指针类型、空类型1、基本类型:整型int、字符型char、浮点型(单精度型float、双精度型double)、枚举类型enum2、构造类型:数组型[]、结构体类型struct、共用体类型union3、指针类型*4、空类型void2020/4/2010三、C语言的数据类型:数据可以分为常量和变量两种:•常量:是指在程序运行过程中,其值不能被改变的量。C语言中,有整型常量、实型常量、字符常量、字符串常量四种。常量是通过字面形式来区分的。•变量:是指在程序运行过程中,其值可以改变的量。一个变量实质上是代表了内存中的某个存储单元;变量是有类型的。变量的定义:格式:数据类型名变量名列表;比如:inti,j,k;inti=1,j=1,k=9;/*赋初值*/chara=‘9’,b;chara=’A’,b=a;floaty=5.8;doubles=0.0;2020/4/2011三、C语言的数据类型:变量的定义:注:(1)变量必须先定义后使用,否则出错。(2)变量名属于用户标识符,必须遵守用户标识符的命名规则。(3)在同一“函数体”{}中不能定义同名变量(不论其数据类型是否相同)(4)定义变量名时先写类型名,再写变量名。若同时定义多个变量,则用逗号将变量分隔开。(5)定义变量时可以同时给变量赋初值(初始化)。若变量未赋初值,则变量的值是个随机值。给变量赋初值时要用赋值运算符(=)进行。改变变量值的方法:赋值语句=、输入函数2020/4/2012四、整型数据:1、整形常量:可用十进制、八进制、十六进制表示。•十进制:是用一串连续的数字表示,如32767,-32768,9,0,-7•八进制:用数字0开头的一串连续合法的八进制数字表示。如:013,05,0777,089(出错)•十六进制:用0x或0X开头的一串连续合法的十六进制数字表示0x12,0xfffC程序中,只有十进制数可以是负数。八进制和十六进制不能为负数。若要表示长整型常量则必须在数据后加字母l或L,如0L、34l、045l、0x123L都是合法的长整型常量。2020/4/2013四、整型数据:2、整型变量整型变量的类型及取值范围如下表:(16位系统)整型类型名取值范围占用字节数[signed]int-32768~327672个字节(16)[signed]short[int]-32768~327672个字节(16)[signed]long[int]-2147483648~21474836474个字节(32位)[unsigned]int0~655352个字节[unsigned]short[int]0~655352个字节[unsigned]long[int]0~42949672954个字节2020/4/2014四、整型数据:1、正整数在内存中用“原码”形式存放:如:正整数5在内存中的形式:0000000000000101负整数5在内存中的形式:100000000000000101用int能存储的最大正整数为32767内存中形式:01111111111111112、负数在内存中以“补码”形式存放:取补的步骤:忽略负号,求出数的原码。将所得原码按位取反(0、1互换)加1,即为补码。-5的补码:000000000000010111111111111111010+111111111111111011-5在计算机内存中表示形式2020/4/2015四、整型数据:将补码转换成相应整数的步骤:(1)将补码按位取反加1(2)将步骤1所得的二进制数据转成相应的十进制,然后再加上“负号”即可。如:二进制数:1000000000000000011111111111111111000000000000000+132768-32768•重点记几个特殊的整数:1000000000000000=-327680111111111111111=327671111111111111111=-10000000000000000=00000000000000001=1如:inta=32767;则a=a+1a的结果是:则a=a+2a的结果是:数据的溢出现象。2020/4/2016四、整型数据:3、无符号整数,即只有正整数没有负整数。unsingedintx,y,z;由于没有符号位,所以要注意负整数与无符号整数之间的关系。二进制数形式带符号整数无符号整数1111111111111111-16553510000000000000000-3276832768若有:inta=-1;unsignedintb=65535;则:printf(“%d,%u,%d,%u”,a,a,b,b)问:输出结果为:2020/4/2017五、实型数据:1、实型常量:•小数形式:由数字和小数点组成。必须有小数点,其中小数点的某一侧可以没有数字。如:123.456123..4560.456都是合法的实型常量•指数形式:用“E”或“e”后紧跟一个整数表示以10为底的幂数。如:1.23E-5注:(1)用指数形式表示时,字母E或e之前之后必须都有数字,且之后的数字必须是一个整数。(2)字母E或e的前后及各数字之间不能有空格。如:1.23e4.23e53E23.E2都是合法的5.4e0.5e104E都是不合法2020/4/2018五、实型数据:2、实型变量•单精度型float占4个字节•双精度型double占8个字节•长双精度型longdouble占10个字节(较少使用)如:floatx;doubley;longduoblez;2020/4/2019六、字符型数据:1、字符常量:C语言中的字符常量是用一对单引号(’单撇号)括起来的一个字符。如:'a''A''@''9'转义字符常量:它必须以一个反斜杠“\”开头。常用的转义字符有:\n表示换行符\t表示制表符\b表示退格符\r表示回车符\f表示换页符\\表示反斜杠符\’表示单引号\”表示双引号\ddd表示最多可以有三位八进制数(这三位八进制数不一定以0开头,它只要是0到7之间的数字即可)\000~\777\xhh表示最多可以有两位十六进制数\x00~\xff2020/4/2020六、字符型数据:注:(1)不能出现一个单独的反斜杠。如:'\'是不合法的。(2)一个字符常量(包括转义字符)在内存中占一个字节。如:'\007''\x64''\t''a''4'都是合法的字符常量,都只占一个字节。(3)在一对单引号内只能有一个字符(可以是一个转义字符)。2020/4/2021六、字符型数据:2、字符变量:用于存放一个字符(在内存中占一个字节)。类型有:[signed]char、unsignedchar如:charc1,c2;unsignedcharc3,c4;注:(1)字符型数据与整型数据在内存中存入方式是一样的。但字符型数据只占一个字节,所以数值范围较小(-128~127)。(2)大小写字母之间的转换规则:小写字母-32=》大写字母(3)'0'在计算机内存中是按数值48存贮的。2020/4/2022七、字符串常量定义:用一对双引号(双撇号)括起来的若干个字符。如:“abcdefgh”1234567a1b2c3d4注:(1)每一个字符串的未尾都有一个字符串结束符’\0’,在书写字符串常量时可以不写’\0’。如”China”与”China\0”是等价的。(2)注意区分字符常量和字符串常量。如’a’、“a”是不同的数据。(3)C语言中没有字符串变量的概念,不能将一个字符串赋给一个字符变量。C语言中借用字符数组来存放字符串。如:charch1=”A”;不合法charch1[]=”A”;是合法2020/4/2023八、数据类型的隐式转换:数据类型转换是指同一运算符两侧不同数据类型之间的自动转换,它们总是向“高”类型转换。如:表达式1/2*3.0=1.0/2*3.0=2020/4/2024九