版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章C语言概述第二章数据类型、运算符与表达式第三章最简单的C程序设计第四章逻辑运算和判断选取控制第五章循环控制第六章数组第八章编译预处理第九章指针第十章结构体与共用体第十二章文件的基本操作第十三章位运算§2.6变量赋初值
C语言允许定义变量时赋予初值。
如:
inti=6;floatx=8.35;charc='6';不可以将具有相同初值的变量赋初值时写成:inta=b=c=6;
可以这样写:
inta=6,b=6,c=6;
定义变量时赋初值实际上是在运行时执行一个赋初值语句:inta=6;相当于:inta;a=6;注意:
也可以只对某个变量赋初值:
inta,b,c=6;§2.7算术运算符与算术表达式运算符:运算的符号表示。C语言有丰富的运算功能,先简述之2.7.1.C运算符(共有13类)1.
算术运算符+,–,,/,%,等3.
逻辑运算符!,&&,¦¦2.
关系运算符>,<,==,>=,<=,!=4.
位运算符<<,>>,~,¦,^,&.5.
赋值运算符=等6.
条件运算符?等7.
逗号运算符,8.
指针运算符*,&11.
分量运算符•,,12.
下标运算符[]13.
其它运算符如函数的调用()9.
求字节数运算符sizeof10.
强制类型转换运算符(类型)
2.7.2算术运算符和算术表达式一、基本算术运算符+
加法,正值。如:3+6,+3–减法,负值。如:6–4,–5乘法。如:38/除法。如:8/5%求余。如:7%4的值为3注:
两个整型数据相除(结果取整)。
–5/3–1
使用时千万注意int/int可能会出现数据丢失。“/”中,有一个float,则结果为double型。二、算术表达式及算术运算符的优先级与结合性运算对象:常量、变量、函数等优先级:
(),
,/,%,
+,–
算术表达式:用算术运算符和括号将运算对象连接起来,且符合C语法规则的式子。运算结合方向:1.自左向右,为左结合性。
2.自右向左,为右结合性。例:ab/c–1.5+'a'–de;提示:关于运算符的优先级和结合方向详见附录三。a=b=c=d;相当于:a=(b=(c=d));若在运算量的两侧的运算符有相同的优先级,则按它们的结合方向顺序处理。三、可利用强制类型转换运算符将一个算术表达式转换为所需类型形式:(类型名)(表达式)例如:(double)a将a转换为double(int)(x+y)将x+y转换为int(float)(5%3)将5%3转换为float注:
括号不能省略。
否则:intx会理解为变量intx.又如:(int)(x+y)若省略:(int)x+y会变成只将x转成整型.
2.
转换后的类型数据由系统分配一个中间变量存放,而原变量类型不变。
若有:floatx;则:(int)x;
x本身仍为实型,而(int)x由一个中间变量(整)
存放x的整数部分。例:/*exp7.c*/
#include<stdio.h> main() {floatx,y; intm,n; x=3.6; m=36; n=x; y=m; printf("x=%f,y=%f,m=%d,n=%d\n",x,y,m,n); }运行结果:x=3.600000,y=36.000000,m=36,n=3小结:有二种方法进行数据类型转换:
1.
强制且:
强制类型转换运算优先于算术运算符.2.系统自动如:
若x为float,则x%3不合法。但可用(int)x%3来解决。(附录III介绍了优先级)四、自增,自减运算符例如:
若有:
inti=3;++自增1––自减1++i:先使i值+1,再使用i值;i++:先使用i值,再使i值+1.则:j=++i;结果为:j=4,i=4.相当于i=i+1;j=i;则:j=i++;结果为:j=3,i=4.相当于j=i;i=i+1同理:––i,i––,均使i值–1,但:
––i:先使i值–1,再使用i值;i––:先使用i值,再使i值–1例如:
inti=3,j;则:j=––i;结果为:j=2,i=2.相当于i=i–1;j=i;则:j=i––;结果为:j=3,i=2.相当于j=i;i=i–1;1.++和––运算法只能用于变量,不得用于常量和表达式.如:5++,(a+b)++均为不合法.几点注意:2.++,–
–,的结合性为从右至左,而一般算术运算符为从左至右。如:–i++"–"和"++"为同一优先级.–i++相当于–(i++)例:/*exp9.c*/
#include<stdio.h> main() {inti=3,j; j=-i++; printf("i=%d,j=%d\n",i,j); }运行结果:i=4,j=-31.
要慎用++、––运算符。五、有关表达式使用中的问题说明对于表达式(i++)+(i++)+(i++);
我们可能会认为应从左至右:3+4+5=12例:/*exp8.c*/
#include<stdio.h>main(){inti=3,j;
j=(i++)+(i++)+(i++);printf("i=%d,j=%d\n",i,j);}实际运行结果:i=6,j=9先对i进行3次自加,结果i的值为6,然后三个i值相加为18。3+3+3=9然后再把6赋给i值如果表达式j=(i++)+(i++)+(i++);改为:
j=(++i)+(++i)+(++i);则运行结果:
i=6,j=18这是因为运算时是先取i的原值:32.
在表达式中,有的运算符为一个字符,有的为两个字符。一般地:自左至右尽可能多地将若干字符组成一个运算符。如:i+++j,究竟理解为(i++)+j还是i+(++j)?例:#include<stdio.h> main() {inti=3,j=3,m; m=i+++j; printf("i=%d,j=%d,m=%d\n",i,j,m); }运行结果:i=4,j=3,m=6对语句m=i+++j;系统理解为m=(i++)+j;请注意:不能有这样的语句:m=i+++++j;
系统不理解成m=(i++)+(++j)
因为++运算符的结合方向从右至左。但可以写成m=i+++(++j);另外也不能写成:m=i+(++(++j));3.
在函数调用时要注意参数的计算顺序,如:printf("i=%d,i=%d",i,i++);inti=3;intj=3;printf("j++=%d,j=%d",j++,j);输出结果:i=4,i=3;j=3,j=3;这是因为:参数的计算顺序从右到左。§2.8赋值运算符和赋值表达式符号"="为赋值运算符。2.
整型数据赋给实型变量,数值不变,但按实数形式存放.1.
将实型数据(无论单,双精度)赋给整型变量时,舍弃小数.赋值时,两边类型若不一致,则按以下规则转换:4.
将intlongint,进行符号扩展。即:符号扩展,低16位long的低16位。5.longintint则高16位截断。3.
字符型数据赋给整型变量时:(2)字符带符号整型变量,则字符高位扩展。(1)字符无符号整型变量,则存入低8位,高8位补零。6.
将unsignedint型longint高位补0。位数相同部分赋值
unsignedintintunsignedlonglongunsignedshortshort原值传送,但数据大小不能超值。如:unsignedinta=32768;intb;b=a;
则b的值超出范围,系统赋予它一个另外的值。a与b的取值对应关系:a:0……32767……65535b:0……32767……655351……327683276810……7.
非unsigned型转换成长度相同的unsigned型数据,原样传送(包括符号位)
一、复合赋值运算符:在"
="号之前加一个其它运算符。C语言规定:凡是二目运算符均可构成复合运算符。例:a+=3;相当于a=a+3x=y+8;相当于x=x(y+8)x%=3;相当于x=x%一般形式:<变量><赋值运算符><表达式>二、赋值表达式例:x=10为一赋值表达式其中<表达式>又可以是一个赋值表达式。例:
x=(y=10)相当于y=10;x=y
由于赋值号为右结合性,于是"()"可省略,即为:x=y=10;例:a+=a–=aa(设a12)又:a=5+(c=6)c=6,a=11a=(b=4)+(c=6)
b=4,c=6,a=10a=(b=10)/(c=2)b=10,c=2,a=5进一步,还可用复合赋值运算符作下列运算:步骤:
aa144.a–=aaa=a–aa=12–144=–132a+=–132a=a+(–132)=–264§2.9逗号运算符和逗号表达式
一般形式:
表达式1,表达式2其计算规则:
先计算表达式1,再计算表达式2,最后值为表达式2的值。例:a=35,a4则:先计算35,a15,a4=60,结果为60。又如:(a=35,a4),a+5
扩展形式:表达式1,表达2,…,表达式n,结果为20(作为逗号表达式的值)
a+5a即20a.35=15aa4=60(此时a值仍未变)结果为表达式n的值
注意:
x=(a=3,63)赋值表达式,x的值18;x=a=3,6a逗号表达式,x的值3.逗号表达式主要用于某些语句中需一次计算多个表达式值的情况。如在循环语句中。函数调用中的实参之间虽然用的是逗号间隔,但不是逗号表达式。
如:printf("%d,%d,%d",a,b,c);§2.10类数值型数据间的混合运算C语言允许双精度、单精度、整型及字符数据之间混合运算10+'a'+1.5–8765.1234'b'是允许的。
但有一个规则:先转换成同一类型,再计算。doublefloat高低
图中“”表示必定转换。如'a'+'b',先转换为int。结果为int。转换方法:longunsignedintchar,short即:既使是同一种类型也按""转换。
图中“
”
:表示低,高型数据运算时,均先转换为高型。例:10+'a'+if–d/e其中:
i––intf––floatd––doublee––long10+'a':转为int,结果为intif:转为double,结果为double+:转为doubled/e:转为double-转为double则运算时:第三章最简单的C程序设计§3.1C语句概述C语句全部为可执行语句,对应若干机器操作指命令C程序由许多源文件组成。(分别编译,然后连接)每一个源文件由预编译命令和若干函数组成。每一个函数由说明部分和语句部分组成。C程序结构如图:除说明部分外,重要部分为语句部分。C程序源程序文件1源程序文件i源程序文件n预编译命令函数1函数n说明部分执行部分(语句)……函数调用语句:如:printf("…");C语句分为五类1.表达式语句赋值语句:
如:i=i+1;i++;x+y;空语句:
任何事情都不做。2.控制语句––改变语句的执行顺序if()~else~(条件)for()~(循环)while()~(循环)do~while(循环)switch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度面包砖生产线技术改造升级合同4篇
- 二零二五年度屋顶花园人工草皮养护合同3篇
- 2025个人股权转让与环保责任承担协议:绿色企业股权合作合同4篇
- 二零二五年度企业应收账款保理服务合同
- 二零二五年度城市道路桥梁改造工程承包合同4篇
- 二零二五年度农业投资项目融资合同范本
- 课题申报参考:南越王墓出土凤图像研究
- 课题申报参考:梅兰芳戏曲教育思想研究
- 二零二五年度民政协议离婚案件调解与法院速裁离婚案件审理合同
- 二零二五版煤炭电商平台合作开发合同4篇
- 心肺复苏课件2024
- 《城镇燃气领域重大隐患判定指导手册》专题培训
- 湖南财政经济学院专升本管理学真题
- 2024年湖南商务职业技术学院单招职业适应性测试题库带答案
- 全国身份证前六位、区号、邮编-编码大全
- 2024-2025学年福建省厦门市第一中学高一(上)适应性训练物理试卷(10月)(含答案)
- 2024年全国各地中考试题分类汇编:作文题目
- 弹性力学数值方法:解析法:弹性力学中的变分原理
- 《零售学第二版教学》课件
- 广东省珠海市香洲区2023-2024学年四年级下学期期末数学试卷
- 房地产行业职业生涯规划
评论
0/150
提交评论