复习之余,做点笔记<C语言之数据类型>

一、整数数据类型

(1)整数数据类型

整数类型

char 字符型变量   1字节(8Bit)

short 短整型      2字节(16Bit)

int   整形变量    取决于编译器

long 长整形变量   取决于编译器

对int的理解:在计算机中有CPU和内存,在CPU中有寄存器,CPU与内存之间通过总线进行数据传输,所谓的CPU位数(例如32位、64位)就是指一块寄存器的大小,寄存器多大,总线就可以处理多大带宽的数据,例如32位机器它的寄存器大小就是32位,它一次处理的数据就是32位,则int的大小就是32Bit也就是4字节,总而言之int的大小就是取决于寄存器大小

具体int的长度可以采用函数sizeof(int)来查看。

(2)数据存储形式

数据在计算机中是以二进制形式参与运算的,数据有正有负,这就要求设计一种数据保存形式,方法是补码形式

例如:

以char类型举例,八位表示,则0可以用0000 0000表示,1则用0000 0001表示,那么由于-1=0-1则-1可以用0000 0000 – 0000 0001表示,结果为1111 1111。高位进位直接消去。这就是补码。

所以char型变量表示的范围为-128~127,其中0111 1111为127,1111 1111为128。

上述为有符号形式的变量,C语言还提供了无符号形式变量,可以在变量形式前面加上unsigned无符号形式

无符号变量的设计初衷是为了能够进行二进制移位操作(因为有符号形式时,最高位具有符号意味)。

(3)数据输入输出形式

C语言的数据采用printf函数来进行数据打印,用法如下所示

printf(“数据为%d”,a);//入口参数有多个,第一个含义为数据格式,也就是打印的格式,例子的内容是打印“数据为%d”其中%d为特殊格式,代表一个整形数字,至于数据的内容,则在后面的参数给出,例中是a,加入a = 10则最终打印在屏幕上为“数据为10”

对于%f、%d其他的数据格式后续介绍。

(4)数据选择

我们定义一个数据选择什么类型呢,无特殊要求还是选择int现在的计算机操作都是32位、64位的一次处理数据位数就是32位,即便你声明char型也不会节省空间与时间,相反也许会增加使用时间。

小结:本节主要告诉大家整形数据类型有哪几种,他们在计算机中的存在形式是怎样的。要记住int的表示形式,正因为这样,所以C语言的可移植性比较差,而JAVA语言对于变量类型要求没有这莫严格,int的数据长度不变化,所以人们常用JAVA编写Android(得益于其可移植性)。而C语言的unsigned使得它可以很方便的移位操作,所以他在嵌入式单片机中应用广泛。

二、浮点数据类型

浮点类型就是生活中习以为常的带小数点的数,但是在计算机内部,浮点数的处理是很特别的。整数是以二进制的形式存在于计算机内部的,而浮点数不是。浮点数是编码的数字,因此两个浮点数不能在计算机内部直接以二进制的方式进行计算,通常需要专门的硬件支持。

浮点数的计算机内部表达形式造成了浮点数的很多有意思的现象。

(1)浮点型数据类型

float

32位

±(1.2E-38~3.4E+38)

double

64位

±(2.2E-308~1.79E+308)

注意:表中可以看出浮点型数据表示的数据都是只能在零附近,但是不能表示0,计算机中编码后的浮点型数据是固定的,我们给出一个数据,他会根据这个数据距离哪个数据近,就编码成那一个数据,例如我们命令float f=0.002可能计算机中浮点数据没有这一个数据,而只有数据0.002001和0.002005那么他会自动把我们数据变为0.002001。

(2)浮点型数字的判断

对于浮点型数字,因为数字精度不同,所以a和b可能计算结果都是0.5,但是两个浮点型数字的二进制形式可能不同。

所以判断数字是否相等判断下面的等式

fabs(f1-f2) < 1e-12

浮点型数字的计算本身是由内部CPU硬件进行计算的。

三、逻辑数据类型

(1)逻辑数据类型

数据类型进行逻辑判断时只有真和假在代码中就是0与1。在计算中,CPU认为0是假,非零全是真。本身C语言的整形变量的0代表假,非零的代表真,逻辑值为1。

bool型是逻辑型变量,其包含在stdbool.h中。包含了此头文件,就可以使用bool。但是其用处不大,因为它本身还是整型变量,只不过有两个true 、false值如下所示。

bool a =true;//声明逻辑型变量a = 1

printf(“%d”,a);//输出结果为1

(2)逻辑运算

运算符号

描述

实例

解释

!a

如果a为0则结果为1如果a为非零则结果为1

&&

逻辑与

a&&b

当两数均为1时结果为1其余情况均为0

||

逻辑或

a||b

当两数均为0时结果为0其余情况均为1

&

按位与

a&b

按位与就是把两个变量展开成二进制,对每一位进行与运算

|

按位或

a|b

注意

(1)当按位与运算时,加入a的值已经为假时,结果已经确认为假即0就不需要进行b例如(a=0)&&(b=2)结果为0并且a被赋值为0,但是b没有被赋值为2。同样按位与运算时,假如a的值已经为真时,结果已经确定为真,即1则就不需要进行运算b。

(2)单目运算符的优先级高于双目运算符,例如!age<20表示age的非,然后再运算是否小于20。

C语言的数据类型的更多相关文章

  1. 谈谈C语言的数据类型

    本文摘要: 本文主要讲述C语言中的数据类型,从基本的数据类型到派生的数据类型,从int ,char ,float double ....到指针,数组,函数,指向指针的指针,指向数组的指针,指向函数的指 ...

  2. C语言中数据类型的取值范围

    C语言中数据类型的取值范围如下:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 ...

  3. 初识 go 语言:数据类型

    目录 数据类型 指针 结构体 数组 切片 切片的方法 映射 函数闭包 结束语 前言: go语言的第三篇文章,主要讲述go语言中的数据类型,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示 ...

  4. c语言基础:数据类型 分类: iOS学习 c语言基础 2015-06-10 21:43 9人阅读 评论(0) 收藏

    C语言基本数据类型大体上分为: 整型 和 浮点型   字节: 计算机中最小的储存单位     1 Byte = 8 bit 整型:         int     4                  ...

  5. 「C语言」数据类型及混合运算与类型转换

    深入学习C语言时,有必要先了解一下数据类型的概念,以及它们之间的混合运算与类型转换. 本篇文章便是根据<C语言程序设计教程>和在线翻阅资料后整理而出.(练习题将逐步更新) 目录:     ...

  6. Go语言基本数据类型(四)

    Go语言基本数据类型主要包含:bool,number,string 布尔类型 go中的布尔类型,只能是 true 和 false,例如:var b bool = true 数字类型 整型 类型 描述 ...

  7. C语言基本数据类型大小

    C语言基本数据类型占用的字节数可以通过如下例子获取: #include<stdio.h> int main(void) { printf("char size=%d \n&quo ...

  8. 05 C语言的数据类型

    C语言的数据类型 在C 中,数据类型是用来声明不同类型的变量或函数的一个广泛的概念.变量的数据类型决定了变量存储占用的空间大小,以及如何去解释存储的位模式. C 中的数据类型可分为以下几大类: 序号 ...

  9. 如何制作C语言基本数据类型的思维导图

    在使用C语言编写程序时,数据类型是一个非常重要的内容,任何一个不被重视的数据错误都会使编译器无法翻译,导致程序报错. 使用思维导图来梳理各个数据类型是一个很有效的记忆方法,接下来就为大家展示一下我用i ...

随机推荐

  1. Folder and jar

  2. CSS——伪元素与伪类

    伪类与伪元素 伪类:在特殊性中占据0,0,1,0 :link 向未访问的链接添加特殊的样式.也就是说,链接所指的 URI 尚未出现在用户代理的历史中.这种状态与 :visited状态是互斥的. :vi ...

  3. eclipse创建项目时出现appcompat_v7包及解决办法

    Android开发学习总结(三)--appcompat_v7项目说明 一.appcompat_v7项目说明 今天来说一下appcompat_v7项目的问题,使用eclipse创建Android项目时, ...

  4. 模仿京东顶部搜索条效果制作的一个小demo

    最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...

  5. Android_Menu_PopupMenu

    layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

  6. Hibernate学习笔记--------1.单表操作

    一.hibernate基本开发步骤 1.引入包,官网下载的包,目录\lib\required下的jar都加进去,这里使用的是 hibernate-release-5.2.1.Final 2.编写配置文 ...

  7. mapping 详解5(dynamic mapping)

    概述 在使用 ES 的时,我们不需要事先定义好映射设置就可以直接向索引中导入文档.ES 可以自动实现每个字段的类型检测,并进行 mapping 设置,这个过程就叫动态映射(dynamic mappin ...

  8. Spring 事务模型

    一.三种事务模型 1.本地事务模型:开发人员不用知道事务的存在,事务全部交给数据库来管理,数据库自己决定什么时候提交或回滚,所以数据库是事务的管理者. Connection conn=jdbcDao. ...

  9. Leetcode 242. Valid Anagram(有效的变位词)

    Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = & ...

  10. 世界上最方便的SharePoint移动客户端--Rshare

    Rshare我试用了一段时间,同时也测试了其他家产品,使用后的感觉是Rshare无愧于世界上最方面的SharePoint移动客户端. 1.界面设计很方便,设计中充分考虑到移动客户的使用习惯及喜好,设计 ...