C语言编程入门之--第四章C语言基本数据类型
导读:C语言程序中经常涉及一些数学计算,所以要熟悉其基本的数据类型。数据类型学习起来比较枯燥,不过结合之前的内存概念,以及本节的字节概念,相信数据类型也就不难理解了。本章从二进制的基本概念开始,然后介绍机器语言通用的计算单位字节,最后再介绍C语言中基本的数据类型及其基本概念。
4.1 二进制、字节
计算机,电子信息专业类的大学课程,肯定会有讲解二进制与十进制转换的课程,本节为了篇幅小一点,只提供windows计算器中进制转换工具的使用方法,希望读者谅解。
4.1.1 二进制
机器之间沟通用的是机器语言,机器语言用二进制数据相互沟通,什么是二进制数据?为什么是二进制数据呢?我们日常生活中比较熟悉的是十进制数据,当数字从1开始不停的加1,加到10的时候再加1就会变成11,那么个位又变回1了,这就叫做满10进1。
还有比较熟悉的是十二进制,就是我们的时钟了,当时针从1开始不停加到12时,再加1,时针就又变成1了。当然如果有人习惯24小时制,那就理解为二十四进制也可。

图4.1 时钟
同理,分针和秒针就是60进制了,满60进1。
那么,二进制就应该是满2进1咯,对的,举个简单例子:十进制的1,2,3在二进制为01,10,11。可以看到十进制的3在二进制的第一位为1,因为它满2就进1了。
平时用进制转换可以搬用公式计算,当然快捷的办法是用windows自带的计算器,打开win10系统的计算器软件,选择程序员选项。
注意:不同版本的windows的计算器用法稍微不同,请读者自行了解。

图4.2 windows计算器
鼠标点击DEC,选择十进制,在DEC中输入123,可以发现二进制BIN为01111011,八进制OCT为173,十六进制为7B,如图4.3所示,

图4.3 计算器进制转换
计算器基本用法就是这样了。
注意:为什么机器语言是二进制语言?涉及到数字电路方面的知识,说白了CPU,内存这些就是大量的开关组合起来的,开就是1,关就是0,这正是二进制的一种体现。
4.1.2 字节
二进制最小单位是位(bit),英文有个词组叫做a little bit,意思就是一点点,bit就是最小的位元,比如十进制1的二进制有一个位,十进制2的二进制有两个位“10”,十进制3的二进制也能用两位表示“11”,十进制4的二进制用三个位表示“100”。但是C语言内存中最小数据是1个字节(byte),1个字节有八个位,也就是十进制1的二进制表示为“00000001”,十六进制表示为“0x01”。来个复杂的,十进制的141表示为......打开计算器,可知二进制为“10001101”,它的十六进制为“0x8D”。
注意:十六进制一般会在数值前添加“0x”,用于区分十进制类似的数,比如十进制69和十六进制69就不相等,十六进制的69等于十进制的105,所以用“0x69”表示十六进制。
因为1个字节有八位,所以1个字节数值范围在0~255之间,因为当二进制八位数都为1时即“11111111”最大,等于255。
所以2个字节有十六位,数值范围在0~65535之间,因为当二进制十六位数都为1时即“1111111111111111”最大,等于65535。
所以4个字节有三十二位,数值范围在0~4294967295之间......
所以8个字节有六十四位,数值范围在......
4.2 基本数据类型
C语言中基本数据类型有字符型char,布尔型bool,整型int,长整型long,浮点型float等等,对应的还有无符号字符型unsigned char,无符号整型unsigned int等等。
数据类型有很多,目前就介绍6种,但是如何运用它们呢?我觉得只需要知道这个数据类型的取值范围以及占用多少字节即可。下表请死记硬背:
|
数据类型 |
取值范围 |
占用字节数 |
|
char |
-128 到 127 |
1 |
|
int |
-2,147,483,648 到 2,147,483,647 |
4 |
|
float |
1.2E-38 到 3.4E+38 |
4 |
|
unsigned char |
0 到 255 |
1 |
|
unsigned int |
0 到 4,294,967,295 |
4 |
|
bool |
true或者false |
2 |
表4.1 列举一些基本数据类型
注意:当然C语言数据类型不止这些,因为这系列博客只是编程入门篇,不是搬移各个博客的汇总篇,所以数据类型只介绍其中一部分,日后需要了解别的部分应该就能更轻松的了解。
发现问题:表中char型和unsigned char型的占用字节数都是1个,但是取值范围不同。
解释:unsigned的英文直译是无符号的,而负数的符号是一个负号“-”,所以无符号就是无负号,就是大于0的数。而有符号,就是能够有负号,可以取值小于0,这样就不难理解他们的取值范围了。
注意:数据类型不加unsigned默认为有符号类型。
比如char,是可以有负号的char,取值范围可以小于0,由于占的字节数是1个,所以范围是-128~127,数据的变化总量就是|-128|+127=255,正好是一个字节的取值量。
unsigned char,是无符号的char,取值范围必须大于0,范围是0~255,。同理,int和unsigned int也是这样对比。
float类型是浮点类型,说白了就是带小数点的,比如float类型的值可以取3.1415,而int类型只能取值为3,后面章节讲到运算方面会再次对比float和int。
编程的时候会需要做程序判决功能,就会用到bool类型的数据,取值有真true和假false两种。
C语言编程入门之--第四章C语言基本数据类型的更多相关文章
- C语言编程入门之--第五章C语言基本运算和表达式-part1
导读:程序要完成高级功能,首先要能够做到基本的加减乘除.本章从程序中变量的概念开始,结合之前学的输出函数和新介绍的输入函数制作简单人机交互程序,然后讲解最基础的加减法运算,自制简单计算器程序练手. 5 ...
- C语言编程入门之--第五章C语言基本运算和表达式-part2
5.1.4 再来一个C库函数getchar吸收回车键 回车键也是一个字符,在使用scanf的时候,输入完毕要按下回车键,这时候回车键也会被输入到stdin流中,会搞乱我们的程序. 注意:stdin是输 ...
- C语言编程入门之--第五章C语言基本运算和表达式-part3
5.3 挑几个运算符来讲 常用的运算符除了加减乘除(+-*/)外,还有如下: 注意:以下运算符之间用逗号隔开,C语言中也有逗号运算符,这里不讲逗号运算符. 1. 赋值运算符 =,+=,*= 2. 一 ...
- C语言编程入门之--第六章C语言控制语句
导读:本章带读者理解什么是控制语句,然后逐个讲解C语言常用的控制语句,含有控制语句的代码量多起来后就要注意写代码的风格了,本章末节都是练习题,大量的练习才能掌握好控制语句的使用. 6.1 什么是控制语 ...
- C语言编程入门之--第五章C语言基本运算和表达式-part4
5.3.5 和二进制极为密切的运算符 本小节的运算符需要借助二进制概念来理解. 二进制数据中,比如一个字节的数据,它的十进制为228,二进制就为11100100,如图5.11, 注意:如果不懂怎么转换 ...
- C语言编程入门之--第三章编写第一个C语言程序
第三章 编写第一个C语言程序 导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上了计算机),就是往屏幕输出“hello world”,本章也不例外. 1.1 Hello,World! 这一 ...
- C语言编程入门之--第一章初识程序
第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- java并发编程的艺术——第四章总结
第四章并发编程基础 4.1线程简介 4.2启动与终止线程 4.3线程间通信 4.4线程应用实例 java语言是内置对多线程支持的. 为什么使用多线程: 首先线程是操作系统最小的调度单元,多核心.多个线 ...
随机推荐
- Spring源码阅读-IoC容器解析
目录 Spring IoC容器 ApplicationContext设计解析 BeanFactory ListableBeanFactory HierarchicalBeanFactory Messa ...
- openstack namespace 的应用
查看虚拟机网络连通性 1.neutron port-list | grep IP 2.neutron port-show ID 查看subnet 3.neutron subnet-show ID 查看 ...
- 【微信小程序】记录
学习新东西时,大体都遵循一样的道理,由总入深. 以下整理一下学习小程序的过程.虽然现在做的东西还有许多问题,比如说数据超过一定数量时循环效率低,或者是多次跳转页面后会变卡等问题.这些问题只解决了部分, ...
- 使用release自动打包发布正式版详细教程
昨天写了个release插件的版本管理,今天就在自动发布过程中遇到了许多坑,只能再写一篇自动发布详细教程,纪念我那昨日逝去的青春 (╥ _ ╥`) release正常打包发布流程按照如下几个阶段: C ...
- react 项目全家桶构件流程
资源:create-react-app.react.react-dom.redux.react-redux.redux-thunk.react-router-dom.antd-mobile/antd. ...
- Mac上使用brew update会卡住的问题
Mac上使用brew update会卡住的问题 brew默认的源是Github,会非常慢,建议换为国内的源.推荐中科大的镜像源,比较全面. 解决方案 Homebrew Homebrew源代码仓库 替换 ...
- python 基本数据类型之整数和布尔值
#1. 当前整数的二进制表示,以最少位数 # age = # print(age.bit_length()) #2. 获取当前数据的字节表示 # age = # v = age.to_bytes(,b ...
- ceph-fuse客户端问题排查流程
本文讲述了ceph-fuse客户端问题排查基本流程:) 首先查看集群的整体情况 ceph -s 是否有osd挂掉,是否有pg非active ceph-fuse进程是否存在? ps -ef |grep ...
- [apue] dup2的正确打开方式
管道与重定向常常需要使用dup与dup2复制句柄,其中dup2又较为常用,但是使用dup2有几个小坑需要注意. int dup2(int oldfd, int newfd); man手册页上是这样讲的 ...
- [apue] 管道原子写入量的一个疑问
PIPE_BUF定义了管道可原子写入的数据量,在我的系统(CentOS 6.7)上这个值是4096,写了个程序验证了一下,通过三个维度来考察: N: 生产者数量 M:每个生产者的生产次数 P:每次写入 ...