您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > C-达内C课程PPT
C语言C语言概述C语言及标准化最早由DennisRitchie于1973年为Unix设计并实现,从贝尔实验室到世界各地。标准化C89ANSI(美国国家标准委员会)于89年12月正式通过,1990年被ISO批准为国际标准C991999年ISO通过了新版的C标准,包含了一些重要的改变基于C的语言C++JavaC#Perl……C语言的特点C语言是一种底层语言C语言是一种小型语言有限的语言特性依赖标准函数库C语言是一种包容性语言更广阔的自由度不强制进行详细的错误检查C语言不是一个强类型的语言。但类型检查机制已经得到了加强。C语言的优点高效可移植功能强大灵活从嵌入式到商业数据处理限制少标准库与Unix系统集成C语言的缺点更容易隐藏错误有时会难以理解有时会难以修改C语言基本概念编写一个简单的C程序一个简单的C程序#includestdio.hintmain(){printf(“HelloWorld!”);return0;}保存为xxx.c编译和连接预处理预处理器执行#开头的命令(通常称为指令)编译编译器会将程序翻译成机器指令(目标代码)连接连接器把目标代码和所需的其他附加代码整合在一起,产生可执行的程序。GCCGNUCCompiler的简称,现指GNUCompilerCollection新版本gcc可以编译ada,C,C++,fortran,java和Objective-CGNU为自由软件基金会的一个项目GCC可以免费获取,还可以在多个操作系统中运行GCC是许多基于Unix系统(Linux,BSD,MacOSX)的主要编译器,并广泛应用于商业软件开发GCC使用选项-c编译-o自定义目标名-std=c89或-std=c99-pedantic根据C标准产生警告消息-Wall编译器检测到可能的错误时生成警告消息-O0不优化-O1缺省优化-O3最高优化-E仅预处理-S产生汇编…...HelloWorld中的语言特性指令#includestdio.h函数自定义函数库函数main函数语句显示字符串printf();注释/*注释*/注释的习惯使用方式盒型注释简化盒型翼型注释注释的嵌套是不合法的忘记终止注释可能导致严重问题C99提供的新注释形式//变量和赋值变量类型intfloat声明intx;floaty,z;必须把声明放在语句之前C99中,声明可以不在语句之前赋值给float变量的赋值需要在数值后加f混合赋值是可以的,但不一定安全变量的初始化用printf显示变量的值printf(“%d”,x);printf(“%f”,y);printf(“%d,%.2f”,x,y);变量初始化变量未初始化时访问初始化标识符和关键字标识符,变量、函数、宏、其他实体的名称以字母、下划线开头可以包含字母、下划线、数字大小写敏感不能和关键字冲突标识符长度有限制吗?•C89声称可以任意长,但编译器只记住前31个•C99中是63个关键字有特殊含义的一串字符全部小写标准库中的函数名全部小写C语言书写规范语句可以分开放在任意多行内空格使我们更容易区分缩进有助于轻松识别程序嵌套空行可以把程序划分成逻辑单元驼峰命名方式和下划线区分方式基本类型整数类型C中,基本类型只有char、int、float、double四种有符号和无符号Singed(默认)UnsingedShort和long16位机和32位机上的整数类型的表示范围表示范围并非C标准定义,根据编译器的不同而不同C99中增加的整数类型LonglongintUnsigedlonglongint有些编译器支持非标准的128位整数字面值和常量整数常量(字面值)3被认为是int3.5被认为是double3.5f被认为是float3.5L被认为是longdouble35L被认为是longint35LL被认为是longlong35u被认为是unsignedint35UL是unsignedlong八进制和十六进制03770x12ab浮点类型C提供三种浮点类型Float:单精度Double:双精度Longdouble:扩展双精度C标准没有说明精度的范围有多少IEEE提供了精度:Float1.17548*10(-38)~3.40282*10(38)Double2.22507*10(-308)~1.79769*10(308)浮点常量以下浮点常量有效57.057.57.0e057E05.7e15.7e+1.57e2570e-1字符类型char各ASCII'A'65'a'97'0'48字符操作Charc=‘a’;C=65;C=c+1;C++;有符号和无符号charC标准没有说明普通char是有符号还是无符号C语言对字符类型视为整数类型转义序列响铃\a退格\b换行\n回车\r水平制表\t垂直制表\v特殊字符\\\?\’\”使用printf()输出各种类型的变量值printf(格式字符串,...);%i/%dint%f/%lffloat/double%hd/%ldshortint/longint%uunsignedint%cchar%sstring%paddress%o八进制%x/%X十六进制%gfloat/double去尾零%e/%E科学计数法%%%Scanf()从键盘输入scanf(格式串,地址表);格式串后的每个参数都必需是一个地址(指针)函数返回实际被转换并赋值的输入项的数目格式符d十进制整数型i整数型,可以是八进制,十进制,十六进制o八进制整数u无符号十进制整数x十六进制整数c字符s非空白符组成的字符串efg浮点数p地址Sizeof()sizeof(类型)sizeof(变量名)sizeof(表达式)sizeof只关心类型,只会分析括号中的类型,不会对括号中的内容进行运算。如:inti=5;sizeof(i=10);计算的结果,i是多少?运算符和表达式运算符()[]-.!~++--+-*&(type)sizeof从右向左*/%+-====!=&^|&&||?:=+=-=*=/=%=&=^=|===从右向左,算术运算符+-*/%运算符/可能产生意外的结果运算符%要求操作数是整数把0做为/或%的右操作数会出现未定义的行为当运算符/和%用于操作负数,其结果未定义C89中,操作数的其中之一是负数,结果可以向上取整,也可以向下取整。如-9/7的结果可以是-1,也可以是-2。如果i和j其中一个是负数,i%j的结果依赖具体实现C99中,除法的结果总是向零截取,因此-9/7的结果是-1,i%j的结果符号与i相同。练习将一个二位数逆序打印如29-92提示:n%10获得个位数,n/10获取十位数试想如果是三位数呢?练习EAN13通用商品条形码一般由前缀部分、制造厂商代码、商品代码和校验码组成。条形码的前几位数,00-09代表美国,加拿大,45-49代表日本,690-693代表中国大陆,471代表我国台湾地区,489代表香港特区。校验码就是条形码中最后一位,具体计算规则如下:比如说某个商品的条形码是:69230762131951、把奇数位的数字加起来,除了最后一位校验码,这里是6+2+0+6+1+1=16这个=A2、把偶数位的数字加起来,这里是9+3+7+2+3+9=33这个=B3、A+3*B-1=114,对10取余=44、9-4=5这就是最后一位那个校验码5的来历赋值运算一般的运算符不会改变操作数的值但赋值会改变操作数的值赋值的右结合性i=j=k=0;是合法的k=1+(j=i);是合法的左值左值表示存储在计算机内存中的对象,而不是常量或计算结果赋值运算要求左操作数必须是一个左值•10=I;//错•i+j=0;//错•-i=j;//错复合赋值自增和自减++--前++和后++前--和后--同一表达式多次出现++和--运算,结果往往很难理解i=1;j=2;K=++I+j++;---------------------------I=1;J=2;K=i+++j++;逻辑表达式关系运算符==判等==!=逻辑运算符!&&||&&和||的短路特征逻辑运算的结果,真或假,0或1位运算&按位与经常用来屏蔽某些二进制位(置0)。也可以知道一个数的某一位是1还是0|按位或经常用来将某些二进制位置1,也可以知道某个二进制位是1还是0^按位异或可以用来将指定的位反转~按位取反左移右移左移右边空位补零,右移左边空们补符号位,无符号数补零移位运算经常用来拆字节和凑字节。地址运算符&取地址*根据地址取变量printf中的%p用来输出地址。取地址取得的是一个变量的开始地址。地址是按字节编号的。表达式计算时的类型转换if(任何一个数为longdouble){将另一个数转成longdouble)}elseif(任何一个数为double){将另一个数转成double}elseif(任何一个数为float){float}elseif(任何一个数是unsignedlongint){unsignedlongint}表达式计算时的类型转换elseif(一个是longint而另一个是unsignedint){if(longint可以表示所有的unsignedint的值){将unsignedint转成longint;}else{将两个数都转成unsignedlongint;}}elseif(一个是longint){另一个转成longint}elseif(一个是unsignedint){另一个转成unsignedint;}else{两个数都转成int类型。}流程控制语句If语句if(表达式)语句if(0=i&&in)…if(i0||i=n)…复合语句{多条语句}else子句级联式if语句悬空elseif(y!=0)if(x!=0)r=x/y;elseprintf(Error:yisequalto0\n);练习判断闰年计算股票经纪人的佣金当股票通过经纪人进行买卖时,经纪人的佣金通过交易额来计算计算表:交易额范围佣金费用低于2500元30元+1.7%2500~625056+0.66%6250~2000076+0.34%20000~50000100+0.22%50000~500000155+0.11%超过500000255+0.09%条件表达式表达式1?表达式2:表达式3Switch语句switch(控制表达式){case常量表达式:语句;…..default:语句;}控制表达式被当做整数处理,可以是字符,但不能是浮点数事项字符串常量表达式必须是常量,如3‘A’2+5语句可以是零到多条不允许重复分支,default不一定在最后break练习将数字分级输入一个1~100的数,输出级别输入年,月,输出这个月有多少天?分数范围级别90~100A80~89B70~79C60~69D60E循环while(表达式)语句无限循环while(1)…练习显示平方表112439416……数列求和输入一些数据,输出这些数之和do语句do语句while(表达式);练习计算整数的位数for语句for(表达式1;表达式2;表达式3)语句;for的惯用法for(i=0;in;i++)…for(i=1;i=n;i++)…for(i=n;i0;i--)…在for循环中省略表达式C99中的for语句for(inti=0;in;i++)…逗号运算符空语句经常用来编写空循环体的循环C程序员习惯性地把空语句单独放置在一行不小心在if,while,for中的圆括号后放置分号会创建空语句if(d==0);
本文标题:C-达内C课程PPT
链接地址:https://www.777doc.com/doc-5475253 .html