• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
C语言教程:第二章:
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
C语言教程:第二章: 数据类型、运算符、表达式(7)
软件发布 C语言教程:第二章: 数据类型、运算符、表达式(7)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 认证考试 >> 计算机等级考试 >> 计算机等级考试动态 >> C语言教程:第二章: 数据类型、运算符、表达式(7)

C语言教程:第二章: 数据类型、运算符、表达式(7)

添加时间: 2007-5-25 7:10:31  作者: 计算机等级考试认证参考  阅读次数:49   来源: http://www.d9soft.com

       

 
自增1,自减1运算符   
自增1运算符记为“++”,其功能是使变量的值自增1。自减1运算符记为“--”,其功能是使变量值自减1。自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式: ++i i自增1后再参与其它运算。--i i自减1后再参与其它运算。   
i++  i参与运算后,i的值再自增1。   
i--  i参与运算后,i的值再自减1。    
在理解和使用上容易出错的是i++和i--。 特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。   
void main(){   
int i=8;   
printf("%d ",++i);   
printf("%d ",--i);   
printf("%d ",i++);   
printf("%d ",i--);   
printf("%d ",-i++);   
printf("%d ",-i--);   
} i<--8   
i<--i+1   
i<--i-1   
i<--i+1   
i<--i-1   
i<--i+1   
i<--i-1 int i=8;   
printf("%d ",++i);   
printf("%d ",--i);   
printf("%d ",i++);   
printf("%d ",i--);   
printf("%d ",-i++);   
printf("%d ",-i--);    
i的初值为8   
第2行i加1后输出故为9;   
第3行减1后输出故为8;   
第4行输出i为8之后再加1(为9);   
第5行输出i为9之后再减1(为8) ;   
第6行输出-8之后再加1(为9);   
第7行输出-9之后再减1(为8)   
void main(){   
int i=5,j=5,p,q;   
p=(i++)+(i++)+(i++);   
q=(++j)+(++j)+(++j);   
printf("%d,%d,%d,%d",p,q,i,j);   
}   
i<--5,j<--5,p<--0,q<--0   
i+i+i--->p,i+1-->i,i+1-->i,i+1-->i   
j+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;   
p=(i++)+(i++)+(i++);   
q=(++j)+(++j)+(++j);   
这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。算术表达式表达式是由常量、变量、函数和运算符组合起来的式子。 一个表达式有一个值及其类型, 它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。 单个的常量、变量、函数可以看作是表达式的特例。   
r>是由算术运算符和括号连接起来的式子, 以下是算术表达式的例子:    
a+b  (a*2)/c (x+r)*8-(a+b)/7  ++i sin(x)+sin(y)  (++i)-(j++)+(k--)   

赋值运算符和赋值表达式   
简单赋值运算符和表达式,简单赋值运算符记为“=”。由“= ”连接的式子称为赋值表达式。其一般形式为: 变量=表达式 例如:   
x=a+b   
w=sin(a)+sin(b)   
y=i+++--j 赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。因此   
a=b=c=5   
可理解为   
a=(b=(c=5))   
在其它高级语言中,赋值构成了一个语句,称为赋值语句。 而在C中,把“=”定义为运算符,从而组成赋值表达式。 凡是表达式可以出现的地方均可出现赋值表达式。例如,式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x ,故x应等于13。

在C语言中也可以组成赋值语句,按照C语言规定, 任何表达式在其未尾加上分号就构成为语句。因此如x=8;a=b=c=5;都是赋值语句,在前面各例中我们已大量使用过了。   
如果赋值运算符两边的数据类型不相同, 系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:   
1.实型赋予整型,舍去小数部分。前面的例2.9已经说明了这种情况。   
2.整型赋予实型,数值不变,但将以浮点形式存放, 即增加小数部分(小数部分的值为0)。   
3.字符型赋予整型,由于字符型为一个字节, 而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。   
4.整型赋予字符型,只把低八位赋予字符量。   
void main(){   
int a,b=322;   
float x,y=8.88;   
char c1=’k’,c2;   
a=y;   
x=b;   
a=c1;   
c2=b;   
printf("%d,%f,%d,%c",a,x,a,c2);   
}   
int a,b=322;   
float x,y=8.88;   
char c1=’k’,c2;   
printf("%d,%f,%d,%c",a=y,x=b,a=c1,c2=b);   
本例表明了上述赋值运算中类型转换的规则。a为整型,赋予实型量y值888后只取整数8。x为实型,赋予整型量b值322, 后增加了小数部分。字符型量c1赋予a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位为01000010,即十进制66,按ASCII码对应于字符B)。   

复合赋值符及表达式   
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如    
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,=。 构成复合赋值表达式的一般形式为: 变量 双目运算符=表达式 它等效于 变量=变量 运算符 表达式 例如: a+=5 等价于a=a+5  x*=y+7 等价于x=x*(y+7)  r%=p 等价于r=r%p   
复合赋值符这种写法,对初学者可能不习惯, 但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。逗号运算符和逗号表达式在   

逗号运算符   
C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。   
其一般形式为: 表达式1,表达式2 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。   
void main(){   
int a=2,b=4,c=6,x,y;   
y=(x=a+b),(b+c);   
printf("y=%d,x=%d",y,x);   
}   
a<--2,b<--4,c<--6,x<--0,y<--0   
x<--a+b,y<---b+c    
本例中,y等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。对于逗号表达式还要说明两点:   
1.逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如: 表达式1,(表达式2,表达式3) 形成了嵌套情形。因此可以把逗号表达式扩展为以下形式: 表达式1,表达式2,…表达式n 整个逗号表达式的值等于表达式n的值。   
2.程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。   
3.并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。   
[Practice] //arithmeticint a,b,c;   
float d;   
a=11;   
b=235;   
c=a+b-a*b;

d=(float)c/(float)a;   
a=c/a;’Vtable   
a,2,0   
b,2,0   
c,2,0   
d,4,0.0   
of Vtable   
’Vupdate   
1,0;2,0;3,0   
4,0.0   
1,11   
2,235   
3,-2339   
4,-212.636368   
1,-212   
of Vupdate   
of Practice   
[Practice] //1int a,b,c1,c2;   
a=25;   
b=3243;   
c1=b/a;   
c2=b%a;’Vtable   
a,2,0   
b,2,0   
c1,2,0   
c2,2,0   
of Vtable   
’Vupdate   
1,0;2,0;3,0;4,0   
1,25   
2,3243   
3,129   
4,18   
of Vupdate   
of Practice   
[Practice] //1int a,b,c;   
a=25;   
b=40;   
c=a+b,c+35;’Vtable   
a,2,0   
b,2,0   
c,2,0   
of Vtable   
’Vupdate   
1,0;2,0;3,0   
1,25   
2,40   
3,65   
of Vupdate   
of Practice

 

上下文章:

 

上一篇文章: C语言教程:第十章:文件(3) 下一篇文章: C语言教程:第二章: 数据类型、运算符、表达式(5)

相关文章:

  • 王微反击古永锵:数据是参考 赚钱最要紧
  • 谷歌百科全书网站Knol推出多种语言服务
  • PS调色教程:教你调出婚片温柔暖色调
  • PS教程:打造都市颓废风格海报
  • PS教程:真人仿卡通手绘效果

相关软件:

  • 易语言 V4.04 简体中文正式版
  • DataExplore数据恢复大师 2.8
  • 腾讯QQ IP数据库 1015 纯真版
  • 句宝盆--新概念英语第二册 V4.78
  • 网络数据包嗅探专家 V2.4
  • API拦截教程 V1.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

计算机等级考试分类导航

  • 计算机等级考试动态
  • 计算机一级考试
  • 计算机二级考试
  • 计算机三级考试
  • 计算机四级考试

本类经典文章推荐

  • 全国计算机等级考试三级网络技术(...
  • 三级网络技术复习笔记(第1-2章)
  • 三级笔试样题(PC技术)
  • 三级数据库技术样题
  • 三级网络技术复习笔记(5-7)
  • 三级网络技术复习笔记(第3-4章)
  • 笔试样题(网络技术)
  • 机考如何避免范围性错误
  • 2003年最新三级网络模拟题(2)
  • 全国计算机等级考试三级网络技术部...

计算机等级考试动态阅读排行

  • 9月17日计算机等级考试二级VF答案
  • 完整的计算机等级考试上机模拟系统
  • 计算机等级考试:VFp练习题1
  • 全国计算机等级考试三级网络技术(...
  • 历年操作系统论述题及答案(2)
  • 计算机等级考试:VFp练习题2
  • 计算机二级VB软件环境、考试时间、...
  • 2005年全国计算机等级考试全真模拟...
  • 三级网络技术复习笔记(第1-2章)
  • 全国计算机等级考试报名时间、级别...

计算机等级考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试上机考试应试技...
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有