C语言基本数据类型

9 篇文章 15 订阅
订阅专栏

前言

针对不同的数据,采取不同的存储方式和进行不同的处理。随着处理对象的复杂化,数据类型也要变得更丰富。数据类型的丰富程度直接反映了程序设计语言处理数据的能力。
C语言很重要的一个特点是它的数据类型十分丰富。因此,C语言程序数据处理功能很强。C语言丰富的数据类型可归纳如下:

在这里插入图片描述

一、整数类型

1.整型变量

整数类型数据即整型数据,整型数据没有小数部分的数值。整型数据可分为:基本型、短整型、长整型和无符号型四种。
基本型:以int表示。
短整型:以short int表示。
长整型:以long int表示。
无符号型:存储单元中全部二进位用来存放数据本身,不包括符号。无符号型中又分为无符号整型、无符号短整型和无符号长整型,分别以unsigned int,unsigned short和unsigned long表示。
要注意的是,不同的计算机体系结构中这些类型所占比特数有可能是不同的,下面列出的是32位机中整型家族各数据类型所占的比特数。

在这里插入图片描述
虽然int与unsigned int所占的位数一样,但int的最高位用作了符号位,而unsigned int的最高位仍为数据位,所以它们的取值范围不同。
若要查看适合当前计算机的各数据类型的取值范围,可查看文件“limits.h”(通常在编译器相关的目录下),如下是“limits.h”的部分示例。

#define CHAR_BIT      8         /* number of bits in a char */
#define SCHAR_MIN   (-128)      /* minimum signed char value */
#define SCHAR_MAX     127       /* maximum signed char value */
#define UCHAR_MAX     0xff      /* maximum unsigned char value */

#ifndef _CHAR_UNSIGNED
#define CHAR_MIN    SCHAR_MIN   /* mimimum char value */
#define CHAR_MAX    SCHAR_MAX   /* maximum char value */
#else
#define CHAR_MIN      0
#define CHAR_MAX    UCHAR_MAX
#endif  /* _CHAR_UNSIGNED */

#define MB_LEN_MAX    2             /* max. # bytes in multibyte char */
#define SHRT_MIN    (-32768)        /* minimum (signed) short value */
#define SHRT_MAX      32767         /* maximum (signed) short value */
#define USHRT_MAX     0xffff        /* maximum unsigned short value */
#define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX       2147483647    /* maximum (signed) int value */
#define UINT_MAX      0xffffffff    /* maximum unsigned int value */
#define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */
#define LONG_MAX      2147483647L   /* maximum (signed) long value */
#define ULONG_MAX     0xffffffffUL  /* maximum unsigned long value */

在嵌入式开发中,经常需要考虑的一点就是可移植性的问题。通常,字符是否为有符号数会带来两难的境地,因此,最佳妥协方案就是把存储于int型变量的值限制在signed int和unsigned int的交集中,这可以获得最大程度上的可移植性,同时又不牺牲效率。

2.整型常量

C语言整型数据一般有十进制整数、八进制整数和十六进制整数三种表达形式。说明如下。

  1. 十进制整数的表示与数学上的表示相同,例如:
    256,-321,0
  2. 八进制整数的表示以数字0开头,例如:
    0234表示八进制整数(234)8,所对应的十进制数为 。2×82+3×81+4×80=156。
  3. 十六进制整数的表示以0x开头,例如:
    0×234表示十六进制整数(234)16。(应当注意的是十六进制数前导字符0x,x前面是数字(0)。

在一个整型数据后面加一个字母L或l(小写),则认为是long int型量。如342L、0L、78L等,这往往用于函数调用中。如果函数的形参为long int型,则要求实参也为long int型,此时需要用342L作实参。

二、实数(浮点)类型

1.实数(浮点)变量

实型变量又可分为单精度(float)、双精度(double)和长双精度(long double)3种。列出的是常见的32位机中实型家族各数据类型所占的比特数。
在这里插入图片描述

要注意的是,这里的有效数字是指包括整数部分+小数部分的全部数字总数。
小数部分所占的位(bit)越多,数的精度就越高;指数部分所占的位数越多,则能表示的数值范围就越大。下面程序就显示了实型变量的有效数字位数。

#include<stdio.h>
int main()
{
	float a;
	double b;
	a = 33333.33333;
	b = 33333.333333;
	printf(" a = %f , b = %lf \n" , a , b );
 return 0;

程序执行结果如下:

a=33333.332031 , b=33333.333333

可以看出,由于a为单精度类型,有效数字长度为7位,因此a的小数点后4位并不是原先的数据而由于b为双精度类型,有效数字为16位,因此b的显示结果就是实际b的数值。

2.实型(浮点)常量

在C语言程序设计中,实型数据有以下两种表达形式。

  1. 十进制数形式。由正负号、数字和小数点组成。如5.734、一0.273、0.8、一224等都是十进制数形式。
  2. 指数形式。如546E+3或546E3都代表546×10 3。字母E(或e)之前必须有数字,E(或e)后面的指数必须为整数。
    E8、4.6E+2.7、6e、e、9E7.5都是不合法的指数形式;
    5.74E-7、-3E+6是合法的指数形式实型常量。

三.字符类型

1.字符变量

字符变量可以看作是整型变量的一种,它的标识符为“char”,一般占用一个名节(8bit),它也分为有符号和无符号两种,读者完全可以把它当成一个整型变量。当它用于存储字符常量时,实际上是将该字符的ASCⅡ码值(无符号整数)存储到内存单元中。
在这里插入图片描述

实际上,一个整型变量也可以存储一个字符常量,而且也是将该字符的ASCH码值(无符号整数)存储到内存单元中。但由于取名上的不同,字符变量则更多地用于存储字符常量。以下一段小程序显示了字符变量与整型变量实质上是相同的。

#include<stdio.h>
int main()
{
	char a,b;
	int c,d;
/*赋给字符变量和整型变量相同的整数常量*/
	a=c=65;
/*赋给字符变量和整型变量相同的字符常量*/
	b=d='a';
/*以字符的形式打印字符变量和整型变量*/
	printf("char a=%c,int c = %c", a,c);
/*以整数的形式打印字符变量和整型变量*/
	printf("char b=%d,int d=%d\n",b,d);
return 0;

程序执行结果如下:

char a=A,int c=A;
char b=97,int d=97;

由此可见,字符变量和整型变量在内存中存储的内容实质是一样的。

2.字符常量

字符常量是指用单引号括起来的一个字符,如:‘a’,‘5’,‘?’ 等都是字符常量。以下是使用字符常量时容易出错的地方,请读者仔细阅读。

  1. 字符常量只能用单引号括起来,不能用双引号或其他括号。
  2. 字符常量只能是单个字符,不能是字符串。
  3. 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如’5’和5是不同的。‘5’是字符常量,不能直接参与运算,而只能以其ASCⅡ码值(053)来参与运算。

除此之外,C语言中还存在一种特殊的字符常量——转义字符。转义字符以反斜线“\”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
例如,在前面各例题printí函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
常见的转义字符以及它们的含义。
在这里插入图片描述

‘0’ 的ASCII码 48,‘A’ 的ASCII码 65,‘a’ 的ASCCII码 97

四.枚举类型

在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有7天,一年只有12个月,一个班每周有6门课程等。如果把这些量说明为整型、字符型或其他类型显然是不妥当的。
为此,C语言提供了一种称为枚举的类型。在枚举类型的定义中列举出所有可能的取值,被定义为该枚举类型的变量取值不能超过定义的范围。

枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

枚举类型定义的一般形式如下。

enum 枚举名
{
	枚举值表
};

在枚举值表中应罗列出所有可用值,这些值也称为枚举元素。

例如,定义一个枚举类型和枚举变量如下:

enum colorname
	{red,yellow,blue,white,black};
enum colorname color;

变量color是枚举类型enum colorname,它的值只能是red、yellow、blue、white例如
下面的赋值合法:

color=red;
color=white;

而下面的赋值则不合法:

color=green;
color=orange;

关于枚举类型有几点说明:

  1. enum是关键字,标识枚举类型,定义枚举类型必须以enum开头。
  2. 在定义枚举类型时花括号中的名字称为枚举元素或枚举常量。它们是程序设计者自己指定的,命名规则与标识符相同。这些名字并无固定的含义,只是一个符号,程序设计者仅仅是为了提高程序的可读性才使用这些名字。
  3. 枚举元素不是变量,不能改变其值。如下面这些赋值是不对的:
red=8;yellow=9;

但枚举元素作为常量,它们是有值的。从花括号的第一个元素开始,值分别是0、1、2、3、4,这是系统自动赋给的,可以输出。例如:

printf("%d",blue);

输出的值是2。但是定义枚举类型时不能写成:

enum colorname{0,1,2,3,4};

必须用符号red,yellow,……,或其他标识符。
可以在定义类型时对枚举常量初始化:

enum colornmae{red=3,yellow,blue,white=8,black};

此时,red为3,yellow为4,blue为5,white为8,black为9。因为yellow在red之后,red为3,yellow顺序加一,同理black为9。
④枚举常量可以进行比较。例如:

if(color==red) printf("red");
if(color!=black) printf("it is not black!);
if(color>white) printf(“it is black!);

它们是按所代表的整数进行比较的。
⑤一个枚举变量的值只能是这几个枚举常量之一,可以将枚举常量赋给一个枚举变量。但不能将一个整数赋给它。例如:

color=black; //正确
color=5;///错误

⑥枚举常量不是字符串,不能用下面的方法输出字符串”red”。

printf("%s",red);

如果想先检查color的值,若是red,就输出字符串"red”,可以这样:

color=red;
if(color==red)
printf("red");

五.指针类型

由于指针需要篇幅过大,我们后期单独介绍。

c语言八大数据基本类型,C语言中基本的数据类型有哪些
weixin_26870929的博客
05-17 2万+
C语言中基本的数据类型有哪些发布时间:2020-11-26 15:10:13来源:亿速云阅读:76作者:Leah本篇文章给大家分享的是有关C语言中基本的数据类型有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、对结构体的理解我们知道C语言中有基本数据类型:1、整(数)型:int:基本整型,用于存储整数,占4个字节,默认值为0sh...
C语言数据类型
m0_73984416的博客
11-24 573
C语言数据类型
C语言.不同数据类型之间相互赋值_强制类型转换_非强制类型转换
宇宙超粒终端控制中心的博客
01-07 1140
byteshortintlongfloatdouble以上就是C语言中所有数据类型从低到高的级别。值得注意的是,这个顺序在不同的操作系统和编译器中可能会有所不同,因此在实际编程中,需要特别注意可能存在的兼容性问题。C语言中数据类型的级别高低是由它们在内存中所占用的空间和它们能够表示的数值范围来决定的。级别高的数据类型可以表示更大的数值范围,并且通常占用更多的内存空间。byte: byte是最低级别的数据类型,它通常用于表示一个字节的内存单元。
C语言之数据类型详解
热门推荐
weixin_62604754的博客
10-30 2万+
C语言数据类型详解
C语言— —基本数据类型
水木子的博客
10-17 1万+
本文主要介绍C语言中的基本数据类型(带*的章节内容为进阶知识,对于初学者可以暂时跳过)。 文章目录1. 什么是数据类型2. 基本数据类型3. 有符号与无符号的区别和最值4. 浮点数的存储方式*4.1 二进制小数4.2 科学计数法4.3 浮点数的存储5. 变量与标识符6. 字符型与ASCII表参考资料 1. 什么是数据类型 数据类型,重点是类型。何谓类型,就是一组元素,具有某些相同的性质,我们可以把这些性质高度归纳概括为一个词语,那么这个词语就代表了一个类型。例如,狗就是一种动物类型。 在数学中,数的分类如下
c语言数据类型
weixin_44174362的博客
11-29 5001
c语言数据类型: 1.基本类型: 字符型(char),整型(int,short,long),浮点型(float,double) 2.构造类型: 数组,结构体(struct),联合体(union),枚举类型(union) 3.指针: 4.空类型(void) ...
C语言中的基本数据类型
qq_53086187的博客
04-02 1万+
C语言中的基本数据类型分别为以下几种 整型、浮点型、字符类型 整型又分为整型int、短整型short、长整型long 浮点型分为单精度浮点型float、多精度浮点型double 首先来介绍整型 1、短整型short #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { short a = 10; //定义一个短整型变量a,并赋值10给a printf("%d\n", a); return 0;
C语言基本数据类型.ppt
11-13
C语言基本数据类型.ppt
C语言程序设计各章节习题练习:C语言基本数据类型及运算.doc
09-17
C语言程序设计各章节习题练习:C语言基本数据类型及运算.doc
C语言基本数据类型ppt课件.ppt
11-13
C语言基本数据类型ppt课件.ppt
C语言基本数据类型.jpg
04-11
#数据类型的描述,其中有void,_bool(布尔类型),int , char,double ,long double 等
C语言基本数据类型-完整版.pdf
12-17
C语言基本数据类型-完整版.pdf
C语言基本数据类型共3页.pdf.zip
10-29
C语言基本数据类型共3页.pdf.zip
c语言 基本数据类型
11-08
第二章 基本数据类型、运算符与表达式.ppt
C语言基本数据类型
tiger_gy的博客
03-19 2万+
C语言基本数据类型 c语言基本数据类型有9个,分别是int、long、short、char、float、double、void、signed、unsigned。其中int、long、short、char、float、double在java语言中常见。其余三个在java语言没有。 * signed 有符号数 最高位是符号位 ...
C语言】数据类型都有哪些
2303_77060768的博客
08-03 203
1.各种数据类型的归类;2.各类型的打印符号
C语言中的数据类型
越陌度阡
10-19 181
针对不同的数据,采取不同的存储方式和进行不同的处理。随着处理对象的复杂化,数据类型也要变得更丰富。数据类型的丰富程度直接反映了程序设计语言处理数据的能力。 C语言很重要的一个特点是它的数据类型十分丰富,因此C语言程序数据处理功能很强,C语言丰富的数据类型可归纳如下:...
Java 基本数据类型
最新发布
01-27
Java的基本数据类型包括以下八种: 1. byte:字节型,占用1个字节,范围为-128到127。 2. short:短整型,占用2个字节,范围为-32768到32767。 3. int:整型,占用4个字节,范围为-2147483648到2147483647。 4. long:长整型,占用8个字节,范围为-9223372036854775808到9223372036854775807。 5. float:单精度浮点型,占用4个字节,范围为3.40282347E+38到1.40239846E-45。 6. double:双精度浮点型,占用8个字节,范围为1.79769313486231570E+308到4.94065645841246544E-324。 7. char:字符型,占用2个字节,表示单个字符,范围为0到65535。 8. boolean:布尔型,表示真或假,占用1个字节。 这些基本数据类型在Java中用于存储不同类型的数据,每种类型都有其特定的范围和存储方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • C语言基本数据类型 44861
  • C语言数据类型转换 22104
  • C语言数据输入输出函数 11704
  • C语言常量 变量与作用域 5700
  • 基于QT的电子木鱼小游戏(C/C++) 3509

分类专栏

  • C语言 9篇
  • qt 2篇

最新评论

  • 字符串处理函数(strcpy strcat strcmp strlen)

    Chun303: 在strcat 函數的例子中,char src = “beijing”; 定义类型错了,应该为 char *

  • 基于QT天气预报项目,推荐初学者练手

    Single core: 楼主,你好,求个源码,2158438245@qq.com

  • 基于QT的电子木鱼小游戏(C/C++)

    stairiy: 大佬求素材,求求了

  • C语言数据类型转换

    2301_80849859: 是这个意思

  • C语言数据类型转换

    2301_80219524: 是把int类型的数赋值到float里面的吗

最新文章

  • 基于QT的电子木鱼小游戏(C/C++)
  • 基于QT天气预报项目,推荐初学者练手
  • C语言指针
2022年11篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源courage是什么意思2019年起名字大全集山河令原著起名字2021免费起名咸鱼幼崽改拿团宠剧本段奕宏陶虹姓华的女生起什么名字更胜黎明前的琉璃色魔兽地图宠物小精灵双胞胎女起名字大全服装qq群孩子起名免费软件下载1970年4月24日花町物语动漫漫画老师400字优秀作文取名字大全2013冯氏起名字至尊龙婿叶辰免费全文阅读完整版意大利vs比利时比分预测写给民宿起名字卋罖是什么意思鹿鼎记未删减版周和刘起名字女孩台州起名取名封云霆时繁星免费阅读男孩起名姓于什么圣僧不可以律师事务所起名桥起什么名字好听风水与起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化