C语言的数据类型
复习之余,做点笔记<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语言的数据类型的更多相关文章
- 谈谈C语言的数据类型
本文摘要: 本文主要讲述C语言中的数据类型,从基本的数据类型到派生的数据类型,从int ,char ,float double ....到指针,数组,函数,指向指针的指针,指向数组的指针,指向函数的指 ...
- C语言中数据类型的取值范围
C语言中数据类型的取值范围如下:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 ...
- 初识 go 语言:数据类型
目录 数据类型 指针 结构体 数组 切片 切片的方法 映射 函数闭包 结束语 前言: go语言的第三篇文章,主要讲述go语言中的数据类型,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示 ...
- c语言基础:数据类型 分类: iOS学习 c语言基础 2015-06-10 21:43 9人阅读 评论(0) 收藏
C语言基本数据类型大体上分为: 整型 和 浮点型 字节: 计算机中最小的储存单位 1 Byte = 8 bit 整型: int 4 ...
- 「C语言」数据类型及混合运算与类型转换
深入学习C语言时,有必要先了解一下数据类型的概念,以及它们之间的混合运算与类型转换. 本篇文章便是根据<C语言程序设计教程>和在线翻阅资料后整理而出.(练习题将逐步更新) 目录: ...
- Go语言基本数据类型(四)
Go语言基本数据类型主要包含:bool,number,string 布尔类型 go中的布尔类型,只能是 true 和 false,例如:var b bool = true 数字类型 整型 类型 描述 ...
- C语言基本数据类型大小
C语言基本数据类型占用的字节数可以通过如下例子获取: #include<stdio.h> int main(void) { printf("char size=%d \n&quo ...
- 05 C语言的数据类型
C语言的数据类型 在C 中,数据类型是用来声明不同类型的变量或函数的一个广泛的概念.变量的数据类型决定了变量存储占用的空间大小,以及如何去解释存储的位模式. C 中的数据类型可分为以下几大类: 序号 ...
- 如何制作C语言基本数据类型的思维导图
在使用C语言编写程序时,数据类型是一个非常重要的内容,任何一个不被重视的数据错误都会使编译器无法翻译,导致程序报错. 使用思维导图来梳理各个数据类型是一个很有效的记忆方法,接下来就为大家展示一下我用i ...
随机推荐
- CSS字体大小设置时的参考(转)
from:http://blog.sina.com.cn/s/blog_51cd580b0100gg6y.html font-size 设置的绝对关键字: 以下几个绝对字体大小的设置是有效的.当然他们 ...
- 【转】字符串分割(C++)
原文:http://www.cnblogs.com/MikeZhang/archive/2012/03/24/mysplitfuncpp.html 经常碰到字符串分割的问题,这里总结下,也方便我以后使 ...
- Hibernate中SQLite方言
package com.lain.util; /** * 2013-7-25 * chongzhen_zhao * SQLite方言 */ import java.sql.Types; import ...
- 使用VisualSVN Server搭建SVN服务器
工具: TortoiseSVN-1.8.4.24972-x64-svn-1.8.5(客户端) LanguagePack_1.8.4.24972-x64-zh_CN.msi Setup-Subversi ...
- 命令行界面下的用户和组管理之useradd和passwd命令的使用
命令行界面下的用户和组的管理之useradd和passwd命令的使用 useradd [-c comment] [-d dir] [-e expire] [-g group] [-G group1,g ...
- Jquery 获取checkbox的checked问题
这个郁闷了,今天写这个功能的时候发现了问题,上网找了好多资料对照,更加纠结... 事实证明一切,自己测试了N遍,发现网上的说法和自己以前的理解都是错的,不知道大家有没发现. 下面来看看网上大多资料的说 ...
- 仿百度自动补全jquery
新建index.html文件,直接复制下面代码到新建的文件index.html里面,用浏览器访问,仅用于参考: <!doctype html><html><meta ch ...
- 一个Notification 进度条插件(android,NJS实现,直接就可使用)
参考文章:http://ask.dcloud.net.cn/article/503 源码地址下载 如题,分享一个Notification 进度条插件(android,用js调用原生api实现,直接就可 ...
- Opencv——彩色图像灰度化的三种算法
为了加快处理速度在图像处理算法中,往往需要把彩色图像转换为灰度图像.24为彩色图像每个像素用3个字节表示,每个字节对应着RGB分量的亮度. 当RGB分量值不同时,表现为彩色图像:当RGB分量相同时,变 ...
- ACM——搜索(一)
南邮OJ——1108 搜索(一) 时间限制(普通/Java):3500MS/10500MS 运行内存限制:65536KByte总提交:1023 测试通过:367 ...