上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
变量的初值和类型转换
作者:未知 申领版权
2012年01月24日 共有 1182 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    变量的初值和类型转换
    
    变量赋初值
    在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法,在定义时赋以初值的方法,这种方法称为初始化。在变量说明中赋初值的一般形式为: 
    类型说明符 变量1= 值1,变量2= 值2,……; 例如:
    int a=b=c=5;
    float x=3.2,y=3f,z=0.75;
    char ch1='K',ch2='P';
    应注意,在说明中不允许连续赋值,如a=b=c=5是不合法的。
    void main()
    {
    int a=3,b,c=5;
    b=a c;
    printf("a=%d,b=%d,c=%d\n",a,b,c);
    }
    a<---3,b<--0,c<---5
    b<--a c
    显示程序运行结果
    
    变量类型的转换
    变量的数据类型是可以转换的。转换的方法有两种, 一种是自动转换,一种是强制转换。 
    
    自动转换 
    自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则: 
    1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
    2.转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
    3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
    4.char型和short型参与运算时,必须先转换成int型。
    5.在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。 如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度, 丢失的部分按四舍五入向前舍入。图21表示了类型自动转换的规则。
    void main()
    {
    float PI=3.14159;
    int s,r=5;
    s=r*r*PI;
    printf("s=%d\n",s);
    }
    PI<--3.14159
    s<--0,r<--5
    s<--r*r*PI
    显示程序运行结果
    float PI=3.14159;
    int s,r=5;
    s=r*r*PI; 
    本例程序中,PI为实型;s,r为整型。在执行s=r*r*PI语句时,r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。
    强制类型转换
    强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把a转换为实型(int)(x y) 把x y的结果转换为整型在使用强制转换时应注意以下问题:
    1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x y)写成(int)x y则成了把x转换成int型之后再与y相加了。
    2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
    main()
    {
    float f=5.75;
    printf("(int)f=%d,f=%f\n",(int)f,f);
    } 
    f<--5.75
    将float f强制转换成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f虽强制转为int型,但只在运算中起作用, 是临时的,而f本身的类型并不改变。因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。
    
    基本运算符和表达式
    
    运算符的种类、优先级和结合性
    C语言中运算符和表达式数量之多, 在高级语言中是少见的。正是丰富的运算符和表达式使C语言功能十分完善。 这也是C语言的主要特点之一。
    C语言的运算符不仅具有不同的优先级, 而且还有一个特点,就是它的结合性。在表达式中, 各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约, 以便确定是自左向右进行运算还是自右向左进行运算。 这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。
    
    运算符的种类C语言的运算符可分为以下几类:
    1.算术运算符
    用于各类数值运算。包括加( )、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增( )、自减(--)共七种。
    2.关系运算符
    用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
    3.逻辑运算符
    用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
    4.位操作运算符
    参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
    5.赋值运算符
    用于赋值运算,分为简单赋值(=)、复合算术赋值( =,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
    6.条件运算符
    这是一个三目运算符,用于条件求值(?:)。
    7.逗号运算符
    用于把若干表达式组合成一个表达式(,)。
    8.指针运算符
    用于取内容(*)和取地址(&)二种运算。
    9.求字节数运算符
    用于计算数据类型所占的字节数(sizeof)。
    10.特殊运算符
    有括号(),下标[],成员(→,.)等几种。
    
    优先级和结合性
    C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理。 C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y z则y应先与“-”号结合, 执行x-y运算,然后再执行 z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。 C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
    
    算术运算符和算术表达式基本的算术运算符
    1.加法运算符“ ”加法运算符为双目运算符,即应有两个量参与加法运算。如a b,4 8等。具有右结合性。
    2.减法运算符“-”减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。
    3.乘法运算符“*”双目运算,具有左结合性。
    4.除法运算符“/”双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。
    void main(){
    printf("\n\n%d,%d\n",20/7,-20/7);
    printf("%f,%f\n",20.0/7,-20.0/7);
    }
    双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。 printf("\n\n%d,%d\n",20/7,-20/7);
    printf("%f,%f\n",20.0/7,-20.0/7);
    本例中,20/7,-20/7的结果均为整型,小数全部舍去。而20.0/7和-20.0/7由于有实数参与运算,因此结果也为实型。
    5.求余运算符(模运算符)“%”双目运算,具有左结合性。要求参与运算的量均为整型。 求余运算的结果等于两数相除后的余数。 
    void main(){
    printf("%d\n",100%3);
    }
    双目运算,具有左结合性。求余运算符% 要求参与运算的量均为整型。本例输出100除以3所得的余数1。
    

 

相关新闻

缔约立富---赚钱靠真智慧
Excel图表创建步骤
有机反应的主要类型
有关烃的计算类型
计算机 基础 填空题
人口的变化(习题)
分析运算符
数据表示和类型
汇编 程序 分支结构
除法指令和类型转换指令

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》