【C语言】06-基本数据类型-程序员宅基地

技术标签: java  移动开发  c/c++  

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略

C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2、Oracle都是C语言写的。

C语言的数据类型大致可以分为下图中的几类:

一、变量

跟其他语言一样,C语言中用变量来存储计算过程使用的值,任何变量都必须先定义类型再使用。为什么一定要先定义呢?因为变量的类型决定了变量占用的存储空间,所以定义变量类型,就是为了给该变量分配适当的存储空间,以便存放数据。比如你是char类型,我就只给你分配1个字节就够了,没必要分配2个字节、3个字节乃至更多的存储空间。

下面的表格描述了在16位编译器环境下,基本数据类型所占用的存储空间,了解这些细节,对以后学习指针和数组时是很有帮助的

需要注意的是:

1.局部变量的使用跟Java稍微有点不一样

1> 在Java中,你声明了一个局部变量后,如果没有经过初始化赋值就使用该变量,编译器直接报错

第9行报错了,因为变量a没有初始化

 

2> 在C语言中,你声明看一个局部变量后,没有经过初始化赋值是可以使用的

复制代码
1 #include <stdio.h>
2 
3 int main()
4 {
5     int b;           
6     printf("%d", b);
7     return 0;
8 }
复制代码

但这是很危险的,不建议这样做。大多数人应该觉得变量b打印出来应该是0,其实不是。因为系统会随意给变量b赋值,得到的是垃圾数据。

上述代码的打印结果是:因此,局部变量还是必须先进行初始化赋值,然后再使用,这样才是最安全的做法。

* 如果是全局的int类型变量,系统会默认赋值为0

 

2.char的取值范围是:ASCII码字符 或者 -128~127的整数

于是,使用char存储大写字母A有2种赋值方式:

// 方式1
char c = 'A';

// 方式2
char c = 65;

上面两种方式是等效的,因为大写字母A的ASCII码值刚好为65。点击查看ASCII码表的所有值

 

3.char只能存储一个字符

汉字或者字符串需要用字符数组来存储,因为一个汉字占了2个字符,一个字符串是由一个或者多个字符组成的。

因此,下面的写法都是错误的:

char c1 = '我';
char c2 = '123';
char c3 = "123";

 

二、类型修饰符

我们还可以在基本数据类型的前面加一些修饰符,也有人称之为限定符,一样的意思。

有以下4种类型修饰符:

  • short  短型
  • long  长型
  • signed  有符号型
  • unsigned  无符号型

1.用法演示

这些修饰符最常是用来修饰int类型(可以省略int)

复制代码
 1 // 下面两种写法是等价的
 2 short int s1 = 1;
 3 short s2 = 1;
 4 
 5 // 下面两种写法是等价的
 6 long int l1 = 2;
 7 long l2 = 2;
 8 
 9 // 可以连续使用2个long
10 long long ll = 10;
11 
12 // 下面两种写法是等价的
13 signed int si1 = 3;
14 signed si2 = 3;
15 
16 // 下面两种写法是等价的
17 unsigned int us1 = 4;
18 unsigned us2 = 4;
19 
20 // 也可以同时使用2种修饰符
21 signed short int ss = 5;
22 unsigned long int ul = 5;
复制代码

 

2.short和long

1> short和long可以提供不同长度的整型数,也就是可以改变整型数的取值范围,比如short的取值范围是-32768~32767,long的取值范围就是-2147483648~2147483647

2> 当然,数据的存储长度也会跟着变化。比如,在64位编译器环境下,short占2个字节(16位),int占4个字节(32位),long占8个字节(64位)。世界上的编译器林林总总,不同编译器环境下,取值范围和占用的长度是不一样的,不过幸运的是,ANSI \ ISO制定了以下规则:

* short跟int至少为16位(2字节)

* long至少为32位(4字节)

* short的长度不能大于int,int的长度不能大于long

* char一定为为8位(1字节),毕竟char是我们编程能用的最小数据类型

 

3.signed和unsigned

1> signed代表有符号,包括正数、负数和0;unsigned代表无符号,只包括正数和0。比如,signed的取值范围是-32768~32767,那么unsigned的取值范围是0~65535,当然,不同的编译器有不同的取值范围

2> 其实,signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数,

 

4.signed、unsigned也可以修饰char,long还可以修饰double

unsigned char c1 = 10;
signed char c2 = -10;

long double d1 = 12.0;

 

三、不同编译器环境下基本数据类型的存储长度

红色的代表常用的数据类型

 

 

 
 

转载于:https://www.cnblogs.com/fgcs/p/4744420.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34391445/article/details/94352537

智能推荐

下载并安装MS office 365_setup.def.zh-cn_o365proplusretail_-程序员宅基地

文章浏览阅读3k次。进入官网 https://login.microsoftonline.com/ 使用自己的帐号登录office 下载Setup.Def.zh-cn_O365ProPlusRetail_08caf41c-85cb-414f-8739-b5d396199eef_TX_SG_Platform_def_b_64_.exe 安装 ..._setup.def.zh-cn_o365proplusretail_

[elementui]控制台报错 opper-append-to-body is about to be deprecated_popper-append-to-body is about to be deprecated in-程序员宅基地

文章浏览阅读2.5k次。环境:vue3 element-plus控制台报错 elementui。_popper-append-to-body is about to be deprecated in version 2.3.0, please use

力扣数据库基本练习题分享-程序员宅基地

文章浏览阅读355次,点赞12次,收藏7次。【代码】力扣数据库基本练习题分享。

优化GitHub网站访问慢的问题_解决github访问速度慢-程序员宅基地

文章浏览阅读1.9k次。大型网站服务器都不会是只有一台服务器,而是多台服务器组成的集群一起对外提供服务。使用测速,找一个速度比较快的服务器。图中可以看到140.82.121.4这个ip比较快,最后,刷新 DNS 缓存使增加的映射生效。Mac 刷新 DNS 缓存,在终端输入Windows 刷新 DNS 缓存,cmd 命令窗口执行修改完 hosts后再刷新github网页 应该快一点了。_解决github访问速度慢

【C语言】1~6这6个自然数组成一个三角形_用1-6这六个自然数组成一个三角形,并让这个三角形-程序员宅基地

《啊哈C!思考快你一步》第五章中,提出了一个逻辑挑战,要求用1~6这6个自然数组成一个三角形,并让三条边的值之和相等。共有24种可能性,非常有趣,值得一试。

HIVE的权限控制和超级管理员的实现-程序员宅基地

文章浏览阅读1.4k次。Hive用户权限管理从remote部署hive和mysql元数据表字典看,已经明确hive是通过存储在元数据中的信息来管理用户权限。现在重点是Hive怎么管理用户权限。首先要回答的是用户是怎么来的,发现hive有创建角色的命令,但没有创建用户的命令,显然Hive的用户不是在mysql中创建的。在回答这个问题之前,先初步了解下Hive的权限管理机制。Hive用户组和用户即Linux用户组和用户,..._如何给hive 设置super admin

随便推点

ubuntu编译安装pcl_ubuntu安装pcl-程序员宅基地

文章浏览阅读1.9k次。基于Ubuntu18.04安装PCL点云_ubuntu安装pcl

python: plt.cm.Set1, Set2,Set3返回颜色-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏9次。cm代表color map,即颜色映射地图,Set1, Set2, Set3是它的三个颜色集合,可返回颜色。该网站可在线测试本文代码,以便快速理解本文代码:http://kakazai.cn/index.php/Kaka/Python/query?name=cm.setimport matplotlib.pyplot as plt#颜色可用元组表示,元组由4个元素组成,每个元素范围在[0..._plt.cm.set1

Linux命令之 --- chmod命令_chmod -r啥意思-程序员宅基地

文章浏览阅读2.7k次。chmod是控制用户权限的命令。每个文件活目录的权限有三组,分别是拥有者、同组用户、其他用户。先用【ls -l】查看一下文件的权限在上图中,标黄色部分,共有10个位置。第一个字符是指定文件类型,如果第一个字符是横线,表示是一个非目录的文件。如果是d,则表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符为一组,分别表示了3组用户对文件或者目录的权限。权限依次为rwx,当没有相应权限是,就使用-来代替。rwx:r代表可读,w代表可写,x代表可执行。通过上面命令知道文件或者目录的权限后,_chmod -r啥意思

Easyexcel 实现批量插入图片_easyexcel导入图片-程序员宅基地

文章浏览阅读6.1k次。目录1 Maven依赖2 PictureModel3CustomPictureHandler4 调试代码5 调试结果注:1 Maven依赖 <!--hutool工具包--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifact.._easyexcel导入图片

用PASS软件完成多组率的样本量计算_pass样本量计算官网-程序员宅基地

文章浏览阅读3k次。pass教程:链接:https://pan.baidu.com/s/1fn7AbMtrOJ0hWWghe7yFaA?pwd=shtd 提取码:shtd 临床上经常碰到3组或3组以上的比较,结局可能是比例或率,或定量变量,或事件。如果是率的话,如何计算样本量呢?多组率的样本量计算公式可以从两个角度来计算,整体差异比较的角度和两两比较的角度。不同的研究目的所应用的样本量计算方式不同,本篇首先从整体差异性比较的角度,以三组为例开展实例分析操作。研究设计为随机对照试验。本研究探讨的是不同强度的运动干预对产后抑郁_pass样本量计算官网

恒生电子股份有限公司--软件测试--《社招、校招jd、校招行程,招聘动态》整理-程序员宅基地

文章浏览阅读3.2k次。恒生电子股份有限公司第一目标目录社招jd校招jd附件(校招行程,招聘动态)互联网金融行业详细介绍:1995年2月,恒生电子创始团队八位年轻的工程师怀揣梦想,毅然决然投身于金融IT领域,2003年12月,恒生电子股份有限公司在上海证券交易所主板上市(代码600570),是中国领先的金融软件和网络服务供应商业务范围包括证券、基金、期货、银行、信托、保险、财资...