第二章 数据和C
2.1错误和警告
如果输入这个程序的过程中出现错误(error),比如少了一个分号,编译器会给出语法错误消息。即使输入正确,编译器还可能发出这样的警告(warning):“警告------从double类型转换为float类型时可能丢失数据。”错误消息表明程序中存在错误,不能对其编译。警告则表明尽管代码正确但有可能不是程序员所要的。警告不终止编译。这里的的警告和C语言怎样处理770这样的值有关。
2.2数据:数据类型和关键字
1.位、字节和字
术语位、字节和字用于描述计算机数据单位或计算机存储单位。这里主要指存储单位。
最小的存储单位为位(bit)。它可以容纳两个值(0或1)之一。不能在一个位中存储更多的信息,但是计算机中包含数量极多的位。位计算机存储单位的基本单位。
字节(byte)是常用的计算机存储单位。
2.浮点数
浮点数与整数的存储方案不一样。浮点数表示法将一个数分为小数部分和指数部分并分别存储。

整型和浮点型在应用中的区别:
1.整数没有小数部分;浮点数可以有小数部分
2.浮点数表示比整数范围大得多的数
3.对于一些算数运算(例如两个很大的数相减),使用浮点数会损失更多精度
4.因为在任何区间内(比如1.0和2.0之间)都存在无穷多个实数,所以计算机浮点数不能表示区域内的所有值。浮点数往往只是实际值的近似。
5.浮点运算通常比整数运算慢。不过,已经开发出来了专门处理浮点运算的微处理器,它可以缩小速度上的差别。
2.3 C和数据类型
1.整型
①声明int变量
int erns;
以上变量声明创建了变量但没有为其赋值。
②初始化变量
初始化(initialize)变量就是为变量赋一个初始值。声明语句为变量创建、标定存储空间并为其指

③int类型常量
C把不含小数点和指数的数当做整数
④八进制和十六进制
前缀0x或者OX表示使用十六进制,前缀0表示使用八进制
⑤显示八进制和十六进制
如果想显示C语言前缀,可以使用说明符%#o、%#x、%#X分别生成0、0x和0X前缀。
2.其他整数类型
①使用多种整数类型的原因
为什么说long和short类型“可能”占比int类型更多或者更少的存储空间呢?因为C仅保证short类型不会比int类型长,并且long类型不会比int短。这样做是为了适应不同的机器。
一般情况,long long类型64位,long类型为32位,short类型为16位,int类型为16位或者32位(依机器的自然字节大小而定)。
②long常量和long long常量
八进制和十六进制常量通常被称为int类型。如果值过大,编译器会试用unsigned int,如果不够大,编译器会依次试用long、unsigned long、long long和unsigned long long类型。
③打印short、long、long long和unsigned long类型数
要打印unsigned int数字,可以使用%u符号。打印long数值,可以使用%ld格式说明符。可以对short类型使用h前缀,因此%hd表示以十进制显示short整数,%ho表示以八进制显示short整数。
不论使用%hd还是%d,short类型变量end的显示结果相同。这是因为在传递函数参数时C自动将short类型的值转换为int类型。这时可能会有两个疑问:为什么要进行这样的转换?h修饰符的用处是什么?第一个问题的答案是:int类型被认为是计算机处理起来最方便有效的整数类型,所以在short类型和int类型长度不同的系统中,使用int类型值进行参数转移的速度更快;第二个问题的答案是:可以使用h修饰符显示一个较长的整数被截为short类型值时的样子。
3.使用字符:char类型
char类型用于存储字母和标点符号之类的字符。但在技术实现上char却是整数类型,这是因为char类型实际存储的是整数而不是字符。
①字符常量及其初始化
char grade = 'A';
char broiled;
broiled = 'T';
char grade = 65;
②非打印字符

③打印字符
printf()说明符决定数据的显示方式不是决定数据的存储方式
4._Bool类型
5.可移植的类型:inttypes.h
C99提供了一个可选的名字集合,以确切地描述有关信息。例如,int6_t表示一个16位有符号整数类型,uint32_t表示一个32位无符号整数类型。
要使这些名字对于程序有效,应当在程序中包含inttyoes.h头文件。与int不同,uint32_t不是关键字,所以必须在程序中包含inttypes.h头文件,编译器才能识别它。
保证所表示的类型至少大于指定长度的最小类型,被称为“最小长度类型”(minimum width type)。例如,int_least8_t是可以容纳至少8位有符号数的那些类型中长度最小的一个的别名。
当然一些程序员更加关注速度而非空间。C99为他们定义了一组可使计算达到最快的类型集合。这类集合被称为“最快最小长度类型”(fastest minimum width type)。例如,把int_fast8_t定义为系统中对8位有效符号数而言计算机快的整数类型的别名。
C99不仅提供这些新的、可移植的类型名,还提供了对这些类型数据进行输入输出的方法。
6.参数和易犯的错误
传递给函数的信息被称为参数。例如,函数调用printf("Hello, pal")包含一个参数“Hello, pal”。与之类似的,函数调用scanf("%d",&weight)包含两个参数:"%d"和&weight。C用都好隔开函数调用中的多个参数。printf()和scanf()函数比较特殊,其参数数目可以不受限制。
第二章 数据和C的更多相关文章
- 【知识强化】第二章 数据的表示和运算 2.4 算术逻辑单元ALU
从本节开始我们就进入到本章的最后一节内容了,也就是我们算术逻辑单元的它的实现.这部分呢是数字电路的一些知识,所以呢,如果你没有学过数字电路的话,也不要慌张,我会从基础开始给大家补起.那么在计算机当中, ...
- KnockoutJS 3.X API 第二章 数据监控(1)视图模型与监控
数据监控 KO的三个内置核心功能: 监控(Observable)和依赖性跟踪(dependency tracking) 声明绑定(Declarative bindings) 模板(Templating ...
- KnockoutJS 3.X API 第二章 数据监控(2)监控属性数组
监控属性数组 如果要对一个对象检测和响应变化,会使用监控属性.如果要对一个序列检测并监控变化,需要使用observableArray(监控属性数组).这在你显示或编辑多个值,需要用户界面的部分反复出现 ...
- MyBatis从入门到精通:第二章数据的创建与插入文件
数据库表的创建: create table sys_user ( id bigint not null auto_increment, ), user_password ), user_email ) ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
- Laxcus大数据管理系统2.0(5)- 第二章 数据组织
第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...
- 第二章 约束和排序数据(SQL基础)
第二章 约束和排序数据 1. 在 emp 表中选择工资介于 1500 到 2500 的员工的信息: 注意:使用 between 下边界 and 上边界时,条件包括边界值: ...
- sql系列(基础)-第二章 限制和排序数据
更好的看↑代码点击VIEW PLAN 第二章 约束和排序数据 1. 在 emp 表中选择工资介于 1500 到 2500 的员工的信息: 注意:使用 between 下边界 and 上边界时.条件包括 ...
- CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- Laxcus大数据操作系统2.0(5)- 第二章 数据组织
第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...
随机推荐
- 拓展django-haystack全文检索的样式和搜索频率限制
一.样式: django-haystack在utils模块中封装了HighHighlighter用于配置搜索结果的样式展示.想要更改结果的样式,可以写个子类重写相应的方法达到效果 1.关键字高亮: H ...
- Alfred 好用工具分享
好用的mac工具分享 1.带历史记录的剪切板 根据快捷键切换选择保存的数据 2.创建热键工作流程 将常用的工具变为热键,快捷切换 如何创建: 设置热键 单击右键 创建actions 打开app 然后将 ...
- JavaScript 调用Bomb后端云
用简单的代码 展示代码的魅力 Bmob 是后端云 全方位一体化的后端服务平台 提供可靠的 Server ...
- 用java读取Excel并依据模板图生成对应的图片
package test; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java. ...
- postgresql--column must appear in the group by clause or be used in an aggregate function
我想得到大于男女平均年龄的人 原表: 在gauss200下执行以下语句: SELECT stname,age,gender,AVG(age) FROM att_test01 GROUP BY gend ...
- git 切换分支 初始化
常见的错误 报错内容基本都是error: failed to push some refsto'远程仓库地址'. 导致产生原因 我们想把自己本地的某个项目关联到远程仓库并推送上去 操作 本地项目-&g ...
- 4组-Alpha冲刺-6/6
一.基本情况 队名:摸鲨鱼小队 组长博客:https://www.cnblogs.com/smallgrape/p/15574385.html 小组人数:8人 二.冲刺概况汇报 组长:许雅萍 过去两天 ...
- CSS设置边距
1.内边距 所有的 HTML 元素基本都是以矩形为基础. 每个 HTML 元素周围的矩形空间由三个重要的属性来控制: padding(内边距) margin(外边距) border(边框 ...
- 内部类(Java)
内部类 基本介绍 概念:在一个类的内部再定义一个完整类 特点:编译之后可生成独立的字节码文件:内部类可以直接访问外部类的私有属性,不破坏封装性 分类:成员内部类:静态内部类:局部内部类:匿名内部类 p ...
- pwm 理解
PWM: 假设PWM的时钟主频是 PWM_CLK_FREQ Hz,则如果需要输出频率为 xHz,占空比为 y% 的波形时, 则只需要在定时器的周期寄存器中写入(PWM_CLK_FREQ / x),在 ...