当前位置: 首页 > news >正文

数据类型,运算符和表达式04 - 零基础入门学习C语言05

第二章:数据类型,运算符和表达式04

让编程改变世界

Change the world by program


 

变量赋初值

  在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法为变量提供初值。本小节先介绍在作变量定义的同时给变量赋以初值的方法。这种方法称为初始化。   在变量定义中赋初值的一般形式为:类型说明符 变量1= 值1,变量2= 值2,……; 例如: int a=3; int b,c=5; float x=3.2,y=3f,z=0.75; char ch1='K',ch2='P';  

各类数值型数据之间的混合运算

  变量的数据类型是可以转换的,转换的方法有两种,一种是自动转换,一种是强制转换。 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。  

自动转换遵循以下规则:

1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 2) 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。 3) 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。 4) char型和short型参与运算时,必须先转换成int型。 5) 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。   下图表示了类型自动转换的规则 [caption id="attachment_59" align="aligncenter" width="150"] C语言数据类型转换规则[/caption] [codesyntax lang="c"]
#include <stdio.h>

void main()
{
    float PI=3.14159;
    int s, r=5;
    s=r*r*PI;
    printf("s=%dn",s);
}
[/codesyntax] 本例程序中,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) 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。 [codesyntax lang="c"]
void main()
{
    float f=5.75;
    printf("(int)f=%d,f=%fn",(int)f,f);
}
[/codesyntax] 本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变。 因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。   [buy]  获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LVRUVLEHPCSG']视频下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2010/09/19/3845945.html

相关文章:

  • python无缓存(转载)
  • 使用windows crypto API加密解密
  • MyEclipse环境下Hibernate入门实例
  • 彻底弄懂CSS盒子模式
  • Linux启动流程
  • 按类别DF特征词选择算法
  • Dell Insprion 6400坏
  • Makefile相关资料
  • 浅谈角色与权限
  • Exchange2007如何给邮件通讯组Distribution Group设置Send As与Behalf 权限
  • 错误与修正
  • 转: CRT检测内存泄漏技巧以及注意问题
  • RIP协议拓扑结构变化-收敛
  • Redhat 下不重启系统发现LUN
  • asp.net导出数据到EXCEL简单有效
  • python3.6+scrapy+mysql 爬虫实战
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 78. Subsets
  • Android Volley源码解析
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • ESLint简单操作
  • happypack两次报错的问题
  • HTML中设置input等文本框为不可操作
  • HTTP中的ETag在移动客户端的应用
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript设计模式系列一:工厂模式
  • Java精华积累:初学者都应该搞懂的问题
  • JSONP原理
  • js面向对象
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MySQL数据库运维之数据恢复
  • Node 版本管理
  • 程序员最讨厌的9句话,你可有补充?
  • 从PHP迁移至Golang - 基础篇
  • 从setTimeout-setInterval看JS线程
  • 动态规划入门(以爬楼梯为例)
  • 关于for循环的简单归纳
  • 离散点最小(凸)包围边界查找
  • 巧用 TypeScript (一)
  • 我与Jetbrains的这些年
  • 移动端唤起键盘时取消position:fixed定位
  • 最近的计划
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)(4.6) Triducer
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (南京观海微电子)——I3C协议介绍
  • (五)Python 垃圾回收机制
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)C#调用WebService 基础