复习之余,做点笔记<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. iOS 并发概念浅析

    在进行iOS开发过程中,我们常会遇到网络请求.复杂计算.数据存取等比较耗时的操作,如果处理不合理,将对APP的流畅度产生较大影响.除了优化APP架构,并发(concurrency)是一个常用且较好的解 ...

  2. Asp.Net 之 下载文件的常用方式

    1.直接使用Response.TransmitFile(filename)方法 protected void Button_Click(object sender, EventArgs e) { /* ...

  3. MySQL(8):数值类型详细分析

    1.日期和时间类型 2.varchar和char 固定长度 (char) 或可变长度 (varchar) 字符数据类型.  例如: a char(10)b varchar(10)都存入'abc'a要求 ...

  4. AAPT: libpng error: Not a PNG file 问题解决

    导入项目到Android Studio的时候,Gradle Build失败了,报的错是 FAILURE: Build failed with an exception. Execution faile ...

  5. 【排障】tomact未能看到网页

    [排障]tomact未能看到网页 文:食梦貘 这是几个月前的事情了,那时候我在安装xwiki,需要用到tomcat,但是初次安装好时碰上过一个故障: 安装tomcat后,客户机用IE网址上输入:服务端 ...

  6. Python基础:1.数据类型(列表)

    提示:python版本为2.7,windows系统 1.列表(List) List,是一个有序的集合,可以添加.删除其中的元素. >>> colors = ['red', 'oran ...

  7. css动画——transition和animation

    http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html 第一部分:CSS Transition 在CSS 3引 ...

  8. Hive UDAF介绍与开发

    UDAF简介 UDAF是用户自定义聚合函数.Hive支持其用户自行开发聚合函数完成业务逻辑. 通俗点说,就是你可能需要做一些特殊的甚至是非常扭曲的逻辑聚合,但是Hive自带的聚合函数不够玩,同时也还找 ...

  9. 对list集合中的对象进行排序(转载)

    原文链接:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元 ...

  10. VS2015+AngularJS+Ionic开发

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...