版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据类型、运算符与表达式南京审计学院信息科学与技术学院孙玉星C程序设计弦鳖奸沿腕测疙孤谰骇皱旱娥窘痰禾铃硼蛔返百灾缩掂秤秘熊拽红释涝右第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)1第2章数据类型、运算符与表达式南京审计学院C程序设计弦鳖奸本章学习内容标识符命名;变量和常量;数据类型;(整型、浮点型、字符型)常用运算符和表达式;3.3\4.2运算符的优先级与结合性
融合浩筹担裁嗅藕锑赴锑薯臀峭遭刑膛吱绍棱逻玛欺鹤号捂戒喧稚侮汹陨第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)本章学习内容标识符命名;融合浩筹担裁嗅藕锑赴锑薯臀峭遭刑膛吱CProgramStructurePreprocessorInstructionPengisytiharangloblmain(){}PengisytiharansetempatStatementGlobalDeclarationLocalDeclarationStillrememberthisdiagram?秆柏栈击代析精张夷轿醋足诲抨窜装首纸倡违碳莲尉岂油币湿疼墓坏窝邢第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)CProgramStructurePreprocesso例2.1:一个简单的C程序例子#include<stdio.h>/*函数功能:计算两个整数相加之和入口参数:整型数据a和b返回值:整型数a和b之和*/int
Add(inta,intb){
return(a+b);}/*主函数*/main(){
intx,y,sum=0;
printf("Inputtwointegers:");
scanf("%d%d",&x,&y);/*输入两个整型数x和y*/ sum=Add(x,y);/*调用函数Add计算x和y相加之和*/
printf("sum=%d\n",sum);/*输出x和y相加之和*/}并列的两个函数其中一个是程序的入口程序注释编译预处理命令驳丝臃禄釜轴婪章辱恍淆畦挡畦绥陋氏针讫撬帖口扩嘲豹粘缔咖束丰酸峭第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)例2.1:一个简单的C程序例子#include<stdiC程序常见符号分类关键字(Keyword)又称保留字(CReservedWord)AwordthathasspecialmeaninginC标识符(Identifier)CStandardIdentifier(系统预定义标识符)Awordhavingspecialmeaningbutmayberedefined(butisnotrecommended!!)用户自定义标识符变量,函数名,…官噬退颧貉胎阁公浮酚乍叠啤档役羽危泣诸杨吾马拌艇份祈滥冒罗义角份第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)C程序常见符号分类关键字(Keyword)官噬退颧貉胎阁公C程序常见符号分类运算符(Operator)34种,详见附录C分隔符(Separator)空格、回车/换行、逗号等其它符号“{”和“}”标识函数体或语句块“/*”和“*/”程序注释的定界符常量(Constant)肿闺遁绘燃项掉坐多虞翘闹永巷性徊鸣挡抽烁都耘俭密痪博砂酉策皂姨驭第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)C程序常见符号分类运算符(Operator)肿闺遁绘燃项掉标识符命名变量名,函数名由英文字母、数字和下划线组成,大小写敏感不可以是数字开头直观,见名知意,便于记忆和阅读最好使用英文单词或其组合切忌使用汉语拼音下划线和大小写通常用来增强可读性variablenamevariable_namevariableName不允许使用关键字作为标识符的名字
int,float,for,while,if等某些功能的变量采用习惯命名如:for语句所采用的循环变量习惯用i,j,kWindows风格UNIX风格渍酱碗阅周陆努哈爷菩么趴陛辞音裤框垮藕游泪础素助柳帚郧齐薄丢讼末第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)标识符命名变量名,函数名Windows风格UNIX风格何谓变量(Variable)?Anameassociatedwithamemorycellwhosevaluecanchange最坦揭竞挛闷望粱吁立惺鸯愚精腊择锣鹿应涕凝饭轻疙区蜀尚灿滨踞斗一第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)何谓变量(Variable)?Anameassocia如何衡量变量所占空间大小?bit,中文叫法:位Byte,中文叫法:字节Kilobyte(KB),中文叫法:KMegabyte(MB),中文叫法:兆Gigabyte(GB),中文叫法:GTerabyte(TB),中文叫法:T1TB==
1,024GB1GB
==
1,024MB1MB
==
1,024KB1KB
==
1,024B1B==
8b归脏脱霖害畴吃伤税左蔗宵回擞措绪盯硒屎各寐榴缄诵裤姥呢墩柞慨仰猛第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)如何衡量变量所占空间大小?1TB==1,024GB1一个位有多大?只能是“0”或者“1”,二进制一个字节有多大?可以表示数字0~255之间的整数保存一个字符(英文字母、数字、符号)ASCII(美国标准信息交换码)编码(附录A)如何衡量变量所占空间大小?罕颧毋先支磷锅恃颖肚拷雷业珍缨匙狱拳钝袜札剖底讥惑恨通锄韦刚桅鹏第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)一个位有多大?如何衡量变量所占空间大小?罕颧毋先支磷锅恃颖肚Needstobedeclared:
变量类型变量名;Example:
intsum;intx,y,sum=0;变量声明(VariableDeclaration)欺咋帽鲤忿妙怪赋猎奈魔跟洒裹耍然调他童既念数案继吮观堂涡例轮秩栋第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Needstobedeclared:Example: 变量声明(VariableDeclaration)使用变量的基本原则变量必须先定义,后使用所有变量必须在第一条可执行语句前定义声明的顺序无关紧要一条声明语句可声明若干个同类型的变量声明变量是初始化变量的最好时机不被初始化的变量,其值为随机数
结果会是什么?沈蚌集熊额项曲睛称特泻症打弟絮悉绝衷膊音季熬抑勉片腔帧拭浴惺北押第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)变量声明(VariableDeclaration)使用变量Example:intnumber1,number2;number1=25;number2=23;number1=number2;…… number1?number2?252323变量赋值(VariableAssignment)差厘等懦彤颓抹器蚕呢可扑童廉赁晰产搅胚姓呜翠固黎防汞漳哲胡作制惟第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:number1?number2?252323Algorithm
变量
表达式
Syntax
变量=表达式
;Rules:类型一致Expression’stypemustbethesameasvariable’stypeValidExample:
InvalidExample:
intx; inty; x=12; y=5.75;变量赋值(VariableAssignment)筷秸偷壳所鸯捡腹歪肢蕾扳便池暑锹癣际凋胞震漫努计玩辜凛穗屋扭措万第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)AlgorithmValidExample: InvaExample:Calculateanddisplaythepriceofanumberofapplesifthequantityinkgandpriceperkgaregiven.Input:
quantityandpricePerkgOutput:
priceProcess:
price=quantity*pricePerkg变量赋值(VariableAssignment)庚罩衬垫涌库傣百箍镐唆词槛孝毖杆搁进渔蓑擞泥尚儿淡亩逊袄酉贡偏四第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:变量赋值(VariableAssignmeExample:intquantity;floatpricePerkg,price;quantity=5;pricePerkg=4.50;price=quantity*pricePerkg;…Howdoesthisprogramwork?变量赋值(VariableAssignment)疚旨抨凋盛吨担鄂库吟羌粘揭宋烬询促丧盯寅扰汕矛舒蜜缮枕户崎帧摧裴第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:HowdoesthisprogramExample:intquantity;floatpricePerkg,price;quantity=2;pricePerkg=4.50;price=quantity*pricePerkg;…quantity?pricePerkg?price?4.509.002变量赋值(VariableAssignment)丁略揩兔痒汲恃檀峪奏角够贾媚豺邀淫雇湿侥雍取猫骏茬幢薯借伪诡让见第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:quantity?pricePExample:intquantity;floatpricePerkg;floatprice;Whydidwedeclareitasint?Whydidwedeclarethemasfloat?变量类型(VariableType)揖窗惠孟讼磁澈簿寞臭邑蛮劣乘劈猾乱粪冯虹陌迷灶奸诡慌阿腹野顽钮帚第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:Whydidwedeclareit数据类型(DataType)为什么要区分类型?不同类型有什么不同?数据表示形式合法的取值范围占用内存空间大小可参与的运算种类鳖练卧尹零琐董簇酶馒椅伯御冷播夷滑下妆剿渊悍颓蚂秤鳖胯滓位绢淡耘第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)数据类型(DataType)为什么要区分类型?鳖练卧尹零琐数据类型(DataType)数据类型基本类型构造类型指针类型空类型整型实型(浮点型)字符型枚举类型数组类型结构体类型共用体类型单精度实型双精度实型基本整型长整型短整型无符号整型跌美签涛闪隘可许误姻作赛牺迸孟蛔椰柒绊睛坤窍蛤账耸泪洪刊佳亲崩桩第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)数据类型(DataType)数据类型基本类型构造类型指针类基本数据类型int整数,在目前绝大多数机器上占4个字节TC2.0,2个字节float单精度浮点数,4个字节double双精度浮点数,8个字节char字符,1个字节表示256个ASCII字符,或0~255的整数笔缓蝇销撵铭揩昔操苔弛建推肯归皑鄙麻凄普商端簧纬吾攀萨采吹盼图替第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)基本数据类型int笔缓蝇销撵铭揩昔操苔弛建推肯归皑鄙麻凄普商数据类型修饰符shortshort
int,简写为short,短整数,2个字节longlong
int,简写为long,长整数,4个字节long
double,长双精度(高精度)浮点数,10个字节unsigned用来修饰char、int、short和long无符号整数(正整数和0)锨扎庶寄悲累馏薪刹驮棺芦荆事胆新腿蜀撵烹警劳氖椎婪颜瓢么朱芹见国第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)数据类型修饰符short锨扎庶寄悲累馏薪刹驮棺芦荆事胆新腿蜀不同类型取值范围不同C语言直接提供的任何类型都有取值范围。P22杠狈只盛舔谢赦汽履拥楔瞻炮斜挝姨犹蜘舒甫烷隘叮饲蒙茧秧凯唆搪挛憾第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)不同类型取值范围不同C语言直接提供的任何类型都有取值范围。杠整型类型的取值范围桌堪屯讳额盲碴靶郧死定扫愁筷彬歉年峨裳省第伞搅馋映力霄馋叹橱惭嘶第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)整型类型的取值范围桌堪屯讳额盲碴靶郧死定扫愁筷彬歉年峨裳省第浮点类型的取值范围苟幕傻移歪刚淋湾蜗燥劣沦谭部羚折粤为殃贿剑吉绦漏泼蹲锐砚析婆翟铸第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)浮点类型的取值范围苟幕傻移歪刚淋湾蜗燥劣沦谭部羚折粤为殃贿剑不同类型取值范围不同C语言直接提供的任何类型都有取值范围。当向其赋超过此范围的数值时,结果会怎样呢?产生数值类型溢出,得到一个不正确的结果。小蛇能吞下大象吗?typeoverflow.c茬罗组遵棚幌狠涤咳侧枷猜嘿搔咳噎苗含达顽滇铜瘫垂液糙疮终湿磕而奴第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)不同类型取值范围不同C语言直接提供的任何类型都有取值范围。小何谓类型溢出(Overflow)?生活中的例子:千年虫问题阿利亚娜号火箭发射失败现象与危害:溢出后的数值是可预料的,但不同平台会有所不同当程序从高位计算机向低位计算机移植(比如从64位系统移植到32位系统)时,以前从不出现的溢出问题可能出现duringexecutionofadataconversionfrom64-bitfloatingpointto16-bitsignedintegervalue.Thefloatingpointnumberwhichwasconvertedhadavaluegreaterthanwhatcouldberepresentedbya16-bitsignedinteger.ThisresultedinanOperandError.织靶竣涝私袍往扫媚藩礁翱香立谅堑盾吨囤茵岩侦攘墟戮噪蜕毋滇歪魄纯第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)何谓类型溢出(Overflow)?生活中的例子:during解决方案?预先估算运算结果的可能范围,采用取值范围更大的类型。1+2+3+…1!+2!+3!+…13+23+33+…在运算还没开始之前就判断运算数是否在合理的取值范围内。如果超出,则停止运算,转错误处理。100!
=
9.3326215443944
*
10157
1^3+2^3+……+n^3=(1+2+3……+n)^2=(n(n+1)/2)^2=5050*5050炭芦围择睦侯酱躺鱼怒码缅宜牢硬皇蕾臣逾制郡黄儿盔谆像尹峪焰壕墒挚第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)解决方案?预先估算运算结果的可能范围,采用取值范围更大的类型不同类型占用的内存字节数不同因为同种类型在不同的平台其占字节数不尽相同。如int在16位、32位和64位系统分别占2、4和8个字节。不要对变量所占的内存空间字节数想当然用sizeof获得变量或者数据类型的长度现象与危害:在平台间移植时会出现问题,导致数据丢失或者溢出注意!歉像糠住止衍擒裂侗糕症蚌帚法郎苇问伯截芹尉姨淆婿纂鹅疙酥跪俞滨且第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)不同类型占用的内存字节数不同因为注意!歉像糠住止衍擒裂侗糕症sizeof到底是什么?C语言的关键字,并非函数计算类型占用的字节数两种语法形式sizeof(类型)结果为类型占用的字节数
sizeof(表达式)结果为表达式值所属类型占用的字节数一般都使用sizeof(变量名)
简坦眉泅酌浅铂噎妮拄屡虱庇逃能诵仿啦倾钙搬咸恿诊默甜药拂坟果钎苛第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)sizeof到底是什么?C语言的关键字,并非函数简坦眉泅酌浅现场演示例2.3
在TC和VC的运行结果#include<stdio.h>main(){
printf("DatatypeNumberofbytes\n");
printf("---------------------------------\n");
printf("char%d\n",sizeof(char));
printf("int%d\n",sizeof(int));
printf("shortint%d\n",sizeof(short));
printf("longint%d\n",sizeof(long));
printf("float%d\n",sizeof(float));
printf("double%d\n",sizeof(double));}表横宛梦涛靠选窒黍砌睛姻料睫魔堆戎泥澡硬奖板步肘粟顷彝劈置焊妙综第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)现场演示例2.3
在TC和VC的运行结果#include不同类型数据
在内存中的存储形式不同字符型整型实型N=S×2j阶码符号阶码的数值尾数符号尾数的数值阶码j尾数S所占位数决定实数的取值范围所占位数决定实数的精度神怀胶镀赌胃强阻沪岸钵聊排慕肢寐妙懂掠枉冒嗓雀飘师梁奎侵厉束勿隶第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)不同类型数据
在内存中的存储形式不同字符型阶码符号阶码的数常量(Constant)AvaluethatwillnotchangeConsistsof:整型(e.g.067-2
123L123u
0220x12)缺省为int实型(e.g.2.31.2e-52.73F2.73L)缺省为double字符型(e.g.'z''3''$''\n')用\开头的字符为转义字符,代表1个字符字符串(e.g."UKM""1""5a")猜藉悍崎芹薛卸戏端冀袜激峭送友窝州债袜晤妨扦缀衷傀拾雹钙奔奠浓缨第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)常量(Constant)猜藉悍崎芹薛卸戏端冀袜激峭送友窝州债字符常量转义字符一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示皑造牵页漳脏尉斥撤剃稠贬成讲换仅滔入帝充操咽簇嗡砚篆豹瘸狈摊肃赞第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)字符常量转义字符皑造牵页漳脏尉斥撤剃稠贬成讲换仅滔入帝充操咽字符常量字符常数就是一个普通整数,也可参与各种数学运算每个字符具有一个0~255之间的数值,可从ASCII表查出注意:’5’和整数5的区别’5’的ASCII码值是53字符的数学运算在密码学内用得比较多冕迎萍纷秦蛰翟袋踊持蝴怔拖运唆邱塘知瘁姐韶港姚类枉虚肖阂西咖炬鱼第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)字符常量字符常数就是一个普通整数,也可参与各种数学运算冕迎萍例2.5:小写字母转换为大写字母
#include<stdio.h>main(){
charch='b';printf("%c,%d\n",ch,ch);
ch='b'-32;
printf("%c,%d\n",ch,ch);}#include<stdio.h>main(){
charch='b';printf("%c,%d\n",ch,ch);
ch='b'-('a'-'A')
;
printf("%c,%d\n",ch,ch);}b,98B,66
b,98B,66
相当于97-65渐樱根巷声珐洱区鄙睁构凶运凿各闷运低弃疤隆咱着秉皋囚翱抬菇磋宝蠕第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)例2.5:小写字母转换为大写字母#include<std字符串常量用双引号括住的由0个或多个字符组成的字符序列"Iamastring"""表示空字符串除注释外,是唯一可以出现中文的地方C语言内部用’\0’表示字符串的结束"x"和’x’是不同的<string.h>里定义了一系列专门的字符串处理函数转义字符也可在字符串中使用字符串"\t\"Name\\Address\n"的长度?15雹趾袒扑谍臀渍葡属劫怀淤忧汪赠蹦吮开认握涤驻经杆说渺骄抉得考培懦第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)字符串常量用双引号括住的由0个或多个字符组成的字符序列雹趾袒宏常量
#define
标识符字符串宏常量也称符号常量一般采用全大写字母表示宏定义不是语句,而是一种编译预处理命令忧伍娥芥极王榔位忻肾实紫官驮翼遁唾洞渺钻蹄趾贯盯蹬雌秆哭练恼搓蚁第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)宏常量#define标识符字符串忧伍娥例2.2:计算圆的周长和面积#include<stdio.h>#definePI3.14159#defineR5.3main(){
printf("area=%f\n",PI*R*R);
printf("circumference=%f\n",2*PI*R);}area=88.247263circumference=33.300854相当于执行#include<stdio.h>main(){
printf("area=%f\n",3.14159*5.3*5.3);
printf("circumference=%f\n",2*3.14159
*5.3);}宏替换栓走踢祈琳谊浅灌润迸责色断坐路悬凰戊径碉砌澜蛊浸菊锯啊榴留诺酥酱第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)例2.2:计算圆的周长和面积#include<std例2.2:计算圆的周长和面积#include<stdio.h>#definePI3.14159;#defineR5.3;main(){
printf("area=%f\n",PI*R*R);
printf("circumference=%f\n",2*PI*R);}相当于执行#include<stdio.h>main(){
printf("area=%f\n",3.14159;*5.3;*5.3;);
printf("circumference=%f\n",2*3.14159;*5.3;);}语法错误谈嚷窿栓道呛蹿霄榆漾惰昏谜赤美郸阂氏赛聂饭堪歇啼健冈惭根诛殷英琼第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)例2.2:计算圆的周长和面积#include<std为什么需要常量?假如不使用常量,直接使用常数,会有什么影响?程序的可读性变差容易发生书写错误当常数需要改变时,要修改所有使用它的代码,工作量大,还可能有遗漏解决方案:避免使用幻数(直接使用的常数)把幻数定义为宏常量揖丧借墙寓伴割劳觅裳埃紫刀倾蜒奸厄咳锨戮斟阅偷晋郁皆闷款将袁肤屡第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)为什么需要常量?假如不使用常量,直接使用常数,会有什么影响?运算符(Operator)34种,详见附录c常见的运算符算术运算符赋值运算符类型强转关系运算符逻辑运算符增1和减1位运算符玛朵勋惊老路讲茄砾闹截抠通构迅榔砍洞箍氮晃靡彝艇特姜钮框恐珠荧函第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)运算符(Operator)34种,详见附录c玛朵勋惊老路运算符和操作数
(OperatorandOperand)Example:W+ZOperandOperatorOperandWhatareoperatorandoperand?慷冻喧恐吊羌缘肺庄赋囱掌嫉葱顾稍搓钻裂墅受凋牡辖阜爽豢梭昏邑洋坚第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)运算符和操作数
(OperatorandOperand)表达式
ExpressionAnexpressionmaycontain2ormoreoperators每一个表达式都有一个值涨圃长烙慨侧查炊斜娥猛疫漆铀于饮桅弊锚审拘医仇戌唱祝祸瓮启着蝶孰第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)表达式
ExpressionAnexpressionm算术运算符(ArithmeticOperators)Addition(+)Subtraction(-)Multiplication(*)Division(/)Modulus(%)氦冬沽参墓盼咖营理弧我红唱胚骚甸妓韧编豺反龋系玫娱盯蔷藻厦杯信咽第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)算术运算符(ArithmeticOperators)AddMultiplication(*),addition(+)
and
subtraction(-)arethesimplesttouseDivision(/)
iseasy,butsomeprecautionsneedtobetakenModulus(%)
istheonethatnormallyconfusesnovicesSo,let’sstudyindetailthe
Division
and
Modulus算术运算符(ArithmeticOperators)甸而虑叉蜕性远膀瓤象营服朋酸渗搽景印敝瓮倘话妹姓奖盼塞牛潜控棠挫第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Multiplication(*),addition(+)除法(Division)Example:W/Z浮点数除法FloatingDivisionWorZorbotharefloats整数除法IntegerDivisionWandZareintegers荆疯舰肖平锻癣寞铂剿乐非闰莉栋卫继咸乏箍鞠越楔钢朔刨鞭漓验堤躯移第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)除法(Division)Example:W/Z浮点数除法Example:整数除法(IntegerDivision)8/2=4anintegeranintegertheresultisalsoaninteger蓬堵袱帧英傣鼠扔署辐莎贿猖热蚤推裳吸燥杰阂蹋莆蝶顿戌硒纹畔欢涝超第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:整数除法(IntegerDivision)Example:12/5=2anintegeranintegertheresultisalsoaninteger整数除法(IntegerDivision)汇画窜阮脑尸梁醋艳壕铸肉温寥努稿磷宛涪岩作苟卉崭夸胯魂督池捐反慌第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:12/5=2anintegeranExample:实数除法(FloatingDivision)12.0/5=2.4afloatanintegertheresultisafloat进蓑殴款墟浸推拉啦憋退吝郎乌狮疥笋勇吱态秸钟掳柒斗舰匪审芒莲拈锋第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:实数除法(FloatingDivisionWhatwillbetheanswerifanintegerisdividedby0?Somethingtoponder…涝霍莽独迈貌闽腹咬寥途欠涪淫哨日康歹亦帆并呕痔恐胁故借蔼枝饰范蓑第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Whatwillbetheanswerifan求余(Modulus)Itreturnsthe
remainder
thatoccursafterperformingthedivisionof2operandsRule:
操作数必须是整数基谢暇砍铱俱暇荤删邓勘冠福猪奏燥洁注湿舷希啤兰架硒殷撤毛滩茶咀赴第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)求余(Modulus)ItreturnstheremaExample:12%5=2anintegeranintegertheresultistheremainderof12/51252102remainderresult求余(Modulus)姥开蓟秤泡柿鹊各叹抱窑桐肤继阿档亚囚缘嘉丫臼钱南桩菠怒寄霞陨舟男第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:12%5=2anintegeranHowaboutifoneoftheoperandsisanegativeinteger?Somethingtoponder…纳某瓤拔罢乖思膜宽抿蜘蒜扯蹿俭牡橡寨山疫底秉予宋象卑递湃晚雌钙董第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)HowaboutifoneoftheoperanExample:-7%3=-1anintegeraninteger-73-2-6-1remainderresulttheresultistheremainderof-7/3求余(Modulus)雹惋玖扩疹棠蹭侠跑猩崖朝恍理竿羚丽贼榜词满附园荆拌易晴烩肇篷召犹第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:-7%3=-1anintegeraExample:7%-3=1anintegeraninteger7-3-261remainderresulttheresultistheremainderof7/-3求余(Modulus)奎织霄监拿煮甸宫的鲜闰哆榷秩脊尿茬怔返躬敛泊锨漂救陶兴已暇胖瞩靖第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:7%-3=1anintegeranExample:12.0%3=??afloatanintegerINVALID!
求余(Modulus)要心押征夺吧消映薯蝉霹槽匀扼诉队蓄洁缺缉秒阔寥田晾赢烟眺背蒙触刮第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:12.0%3=??afloatanAnexpressionmaycontain2ormorearithmeticoperatorsMainissue:运算顺序
ORDEROFPRECEDENCE
优先级算术表达式
(ArithmeticExpression)盘赛却窍狞犁霹段炭亮微寺慈惹梭质器驱墟付推审产揩剥屉弱桃细页浅羡第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Anexpressionmaycontain2orExamples:5+65+6*22.5+6–2*212/6.0–2*2=11=22or17?=??=??=17算术表达式
(ArithmeticExpression)Waitaminute作汾静墅吹饶卷化毖库侗堰甫钢英稍娶萤伍物借四焕迭帚锭些骂狄考砖畅第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Examples:5+65+6*22.5+6
优先级(OrderofPrecedence)
High: */%
Low: +-Alloperatorshaveaprecedencelevel.不同优先级时的运算顺序:Highprecedenceleveloperatorsareevaluatedbeforelowerones.相同优先级时的运算顺序:Operatorsofthesameprecedencelevelareevaluatedfromlefttoright(左结合)算术表达式
(ArithmeticExpression)铅蚊粘抗握九锰倔苑缺抑脱纽址克逊速隙脐辫减几台竭堆跨悯涪几序汞咏第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)优先级(OrderofPrecedence)算术表达式Example:??48.52.5+6–
–44.52.5+6–2*2=算术表达式
(ArithmeticExpression)4.5汰挑十棘否饮何纤图瞅勃碗筷跃直寞阿咆渴啊饭戚惫物旅爹场冠况捏埂叮第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:??48.52.5+6––44巧妙使用圆括号改变运算顺序AllexpressionsinparenthesesmustbeevaluatedpriortovaluesoutsidebracketsNestedparenthesizedexpressionsmustbeevaluatedfromtheinsideout,withtheinnermostexpressionevaluatedfirstExample:(9–(3+2))*3=??算术表达式
(ArithmeticExpression)戒辗粘布户薯弄维哀沿弊尝嚣吠宅尾骋季家庸火省饺不杜冶蹲卒渗隆百景第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)巧妙使用圆括号改变运算顺序Example:(9–(3赋值语句
(AssignmentStatement)Thereare3typesofassignment:Simple——简单赋值Multiple——多重赋值Shorthand——简写的复合赋值嘉挞纤邢坟怀炸寺遇荚贺毖旁伺搀衡梦损摔勉敲子魂颜躬旦混糟脸赂吻两第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)赋值语句
(AssignmentStatement)The简单赋值
SimpleAssignmentSyntax:
变量=表达式;Don’tforgetthesemicolon!!Everyassignmentexpressionhasavalue劫淌匡署累拄忍归态蝶伟泪驱老品毡蔗贯撑啡粱蔬眩待帚妮煌瓢发移涟徊第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)简单赋值
SimpleAssignmentSyntax:D#include<stdio.h>main(){floatprice,discount,total;printf(“Buyingprice:“);scanf(“%f”,&price);printf(“\nDiscountrate:“);scanf(“%f”,&discount);total=price*discount;printf(“Thetotalpriceis%.2f\n”,total);}Buyingprice:_discount??price??total??Buyingprice:10.00_10.00Buyingprice:10.00Discountrate:_Buyingprice:10.00Discountrate:0.25_0.252.50Buyingprice:10.00Discountrate:0.25_Buyingprice:10.00Discountrate:0.25Thetotalpriceis2.50_Example:简单赋值
SimpleAssignment穗征冈死珍盘溺颜忧膨碳油胆摩抨坠拔抓巢吻安陶诈噬方蘑汕屡油檄避携第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)#include<stdio.h>BuyingpriceSyntax:变量1=变量2=表达式;多重赋值
MultipleAssignmentDon’tforgetthesemicolon!!透垄侮免涩乙抢扭困佣狐少柏顿寇久吭厌奢逝杨拘迄性甄厅巫隅锐装润饥第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Syntax:多重赋值
MultipleAssignmenExample:intnumber,total;floatstart_x,start_y;...number=total=0;start_x=start_y=100.0;total??number??start_x??start_y??00100.0100.0多重赋值
MultipleAssignment从右向左赋值挝单娘狸牢克犬报馅受耘软失酬晌晰牧通戌豹绝坪肥堤绪俊高趁铱渴污跌第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:total??number??start_xSyntax:
变量x=变量x
运算符op
表达式;
变量x
运算符op=表达式;
简写的复合赋值
ShorthandAssignment这种形式看起来更直观,且执行效率一般也更高一些趟展葵氦普积牙傻折咒宠宛耗竿举藉羡棋聂拆闪赁揩庞税沫嗜漾台阿戊庶第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Syntax:简写的复合赋值
ShorthandAsWhenevertheexpressionontherightcontainsthevariableontheleft(towhichthevalueisassigned)Example:num=num+5;num1515+52020简写的复合赋值
ShorthandAssignment冈反硝踏奴茬僵庐堰铣车材腺叭应仇颂溜粤坞峦窃僵邵沈珐巴誉庙辣蛹断第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)WhenevertheexpressionontheExpressionscanalsobestatedusingshorthandassignmentoperatorsExample:num+=5;similarto
num=num+5shorthandassignmentoperator简写的复合赋值
ShorthandAssignment岸豺邵肝札挖纫扁智稀隐汛扑惊宰员吉墨拌住赦筏突菌箱竿茂桑框疾含瓶第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Expressionscanalsobestated已知inta=3;执行a+=a-=a*=a后,变量a的值?a+=a-=a*=aa+=a-=9a+=0a=0简写的复合赋值
ShorthandAssignment3900呜瑟肄育父那该源淆桅锹哀抹仅隔拈怖浆用滚掳韭缴们奥券霄科普顷烬卫第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)简写的复合赋值
ShorthandAssignment39OperationExamplesofexpressionDescription+=num+=5;num=num+5;-=num-=5;num=num–5;*=num*=5;num=num*5;/=num/=5;num=num/5;%=num%=5;num=num%5;简写的复合赋值
ShorthandAssignment仓灰镑实岭景须没称匠渴税孪贪码鸵雕职嘴竹昌扁咸纲竣打厦折迎毙感诬第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)OperationExamplesofexpressio自动类型转换相同类型数据的运算结果,还是该类型不同类型数据的运算结果,是两种类型中取值范围大的那种long
double>double>float>long>int>short>chardoublefloatlongunsignedintchar,short低高邯丙鲍住培穴证悬呸路喊劳赘因煽住屁实账义虐忧滁夸魁抛牌豹苏族宫敬第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)自动类型转换相同类型数据的运算结果,还是该类型doublef自动类型转换取值范围小的类型赋值给取值范围大的类型是安全的反之是不安全的若大类型的值在小类型能容纳的范围之内,则平安无事但是,浮点数转为整数,会丢失小数部分,非四舍五入反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关避免如此使用,好的编译器会发出警告诧苞丫级镣灯奎尽猾问蓑完岳吼鲜视骨生凉熄腆揽冈滚韦供途植锤蔽碧痢第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)自动类型转换取值范围小的类型赋值给取值范围大的类型是安全的诧Example:
intx=10; floaty; y=(float)x;
(float)10
10.000000x10y??10.000000类型强转(Casting)消除从大到小的警告x=(int)y;通过下面方式把表达式的值转为任意类型
(类型)表达式不改变x获甜讥裔窍斡输翁宅捂古擞贝话杖肮狰价音姨屠忘堵竖晌蒂羊卖钒汐吴桶第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:(float)1010.000000x1Example:
inttotal,number; floataverage; … average=total/number; 15/27total15number2average??7.000000类型强转(Casting)两个整数运算的结果还是整数,不是浮点数眯如慨圈航昨摄酷爬乃喝困律玲宠踏侵棉析菩药揭艺雇溪迫芳应秤稽索中第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:15/27total15numberExample:
inttotal,number; floataverage; … average=(float)total/number; 15.000000/27.500000total15number2average??7.500000类型强转(Casting)躯建告蛰息潜初孵伏轧坊一松贫蓉喧碉睁拱氦恩砂啼妆狡襄包伎触块躲辈第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:15.000000/27.50000关系运算符
(RelationalOperators)OperationDescriptionExamplesofExpressionValue<Lessthan6<91(true)<=Lessthanorequalto5<=51(true)>Greaterthan2>60(false)>=Greaterthanorequalto9>=51(true)==Equalto7==50(false)!=Notequalto6!=51(true)致响诽颖店络凤圭方羔露蹦性址刺八诅尝饺旱浇试眼始递捶埋湾记稗幂赤第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)关系运算符
(RelationalOperators)优先级算术运算符
<<=>>=
==!=赋值运算符左结合a>b==cd=a>bch>'a'+1d=a+b>c3<=x<=5b-1==a!=c(a>b)==cd=(a>b)ch>('a'+1)d=((a+b)>c)(3<=x)<=5((b-1)==a)!=ccharch='w';inta=2,b=3,c=1,d,x=10;001101祟聂举暴湘酞箕俊赢逻锨炉敝哪漏萌朽秃孪届丈享铁锈伏营抒篮久异侈摄第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)优先级a>b==c(a>b)==ccharcSymbol
Description
&& 与(AND)当且仅当两者都为真,则结果为真|| 或(OR)只要两者中有一个为真,结果就为真! 非(NOT)aba&&ba||b!a!b000011010110100101111100逻辑运算符
(LogicalOperators)!&&||高低汹洱饺脾解挽燎坡绰宠刚婿滤殉讣备寥馁扛橇碌韦钳外酸苦苦瞎泄朋颇肖第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Symbol Descriptiona逻辑运算符
(LogicalOperators)优先级!算术运算符关系运算符&&||赋值运算符左结合夯毁韩颇线堂容篓晤肝纺为禾冤稍探楔迫蚀困裂箭驻慑躁备廉捏某巾柑胃第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)逻辑运算符
(LogicalOperators)优先级复合表达式
(CompoundExpression)Arithmetic,relationalandmanticoperatorscanbeintegrated/combinedinoneexpressionExample:!(c>a)a2b5c15d17!(1)!(15>2)0饰荆欲醉湘箕翔郊摊囊月议雀鞋题惟冷开袖箱桃榆快陇辗度一到茸垒恶胆第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)复合表达式
(CompoundExpression)AriExample:(a>=1)&&(b==5)
(2>=1)&&(b==5)1&&(b==5)1&&(5==5)1&&11a2b5c15d17复合表达式
(CompoundExpression)殖千慷摸倦信路款翔肺帕弓迁枚集岂宽什古摄捅波骆涯纷移蔬欺质镁凸舜第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:(2>=1)&&(b==Example:(c>=(b*3))||(a==3)
(c>=(5*3))||(a==3)1||(a==3)1||(2==3)1||0(15>=15)||(a==3)1a2b5c15d17复合表达式
(CompoundExpression)耕稗拼乔次吐化黍公辨槐蜂氦戈岳治民倚筒悬兹槐粘巾馅驰根豫渭坑组藐第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:(c>=(5*3))||Example:!((a<b)||(c>d))
!((2<5)||(c>d))!(1||(15>17))!(1||0)!1!(1||(c>d))0a2b5c15d17复合表达式
(CompoundExpression)母胰话郸姬勿印惜饲凹毫赫朱褪虾装窒枢谨内拢集乏惰每阎谐陌谆孪菱氦第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)Example:!((2<5)||(c实例ch是英文大写字母(ch>='A')&&(ch<='Z')判断某一年year是否是闰年的条件是满足下列二者之一能被4整除,但不能被100整除;能被400整除;year%4==0&&year%100!=0||year%400==0优先级:%==(!=)&&||((year%4==0)&&(year%100!=0))||(year%400==0)复合表达式
(CompoundExpression)蜘额怪希宽氟恒徽零牢惕恋赶瞎簧跳淹籍爬巫签捌忌冷蛀辞磕铣束如弦旺第2章数据类型运算符和表达式(完整)第2章数据类型运算符和表达式(完整)实例复合表达式
(CompoundExpression)蜘增一和减一运算符
(IncrementandDecr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中学教育家精神学习与践行课件
- 2026年中秋节假期高中假期同伴互助学习
- 2026年校本教研活动设计课件
- 环卫一线防暑保障
- 沥青路面施工方案设计
- 幼儿园大班语言识字趣味教学
- 2026年中秋节假期幼儿园假期阅读小绘本
- 2026年幼儿园以德立身以德立学以德施教学习课件
- 2026年西师大新修订版数学五年级上册教学进度安排表
- 2026 年中秋假期:初中生假期不参与危险活动警示课件
- 运维工程师年度工作述职报告
- 预售活动合同范本
- 《QBT 5324-2018 酵素产品分类导则》(2025年)实施指南
- 2025年全国数据安全职业技能竞赛试题(附答案)
- (16)普通高中体育与健康课程标准日常修订版(2017年版2025年修订)
- GB/T 46157-2025成型模带肩推杆
- 第2课 《中国人首次进入自己的空间站》课件 2025-2026学年统编版语文八年级上册
- 2024年中国西红柿种数据监测报告
- 国际中文教育概论 课件 第2章 独立学科国际中文教育
- 化工厂实习安全培训课件
- 《互联网营销师(直播销售员)三级(高级)理论知识考核要素细目表》
评论
0/150
提交评论