复习之余,做点笔记<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. PAT 1015

    1015. Reversible Primes (20) A reversible prime in any number system is a prime whose "reverse& ...

  2. Mysql性能调优

    在MYSQL命令行客户端添加 \G 语句终止符可以让返回的结果集垂直显示. 一.查找运行缓慢的 SQL语句 :show full processlist ; 二.生成一个查询执行计划(Query Ex ...

  3. 简洁判断一个byte中有多少位为1的bit?

    以下是Brian W. Kernighan公开的一个方法 unsigned bit_count(unsigned v) { unsigned int c; //置位总数累计 ; v; c++) { v ...

  4. UIPickerView

    1.UIPickView什么时候用? 通常在注册模块,当用户需要选择一些东西的时候,比如说城市,往往弹出一个PickerView给他们选择. UIPickView常见用法,演示实例程序 1> 独 ...

  5. Android_CntextMenu_example_textSize

    menu.xml <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item ...

  6. 关于SpringMVC和Struts2的区别

    1.    与struts2不同 1.  springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器. 2. springmvc是基于方法开发,传递参数是通 ...

  7. Java获取 JVM 运行信息

    import java.lang.management.ClassLoadingMXBean; import java.lang.management.ManagementFactory; impor ...

  8. 记工作中的git遇到的问题

    看了 git 回退到某版本后,再在此版本上更新,无法push 操作前,我备份了修改了目录,准备建一个分支进行操作 我在本地revert了一次,commit到了远程仓库.然后上个版本的修改给恢复了... ...

  9. Android 常见adb命令

    1.  查看所有已链接的设备 命令: adb devices   例: C:\Users\laiyu>adb devices List of devices attached 5d3b5aac  ...

  10. 恢复被误操作删除的数据 fn_dblog

    -- Script Name: Recover_Deleted_Data_Proc -- Script Type : Recovery Procedure  -- Develop By: Muhamm ...