【C语言----数据类型】

这篇具有很好参考价值的文章主要介绍了【C语言----数据类型】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:本篇文章为C语言数据类型的个人总结,内容如若有误,请及时联系我更正。

  • 如若转载请注明原创,谢谢。

前言

大家好,我是小明,很抱歉由于个人原因断更了一段时间,从今天开始恢复正常更新,今天总结的是C语言数据类型相关知识。


【C语言----数据类型】,C语言,c语言,算法,开发语言

提示:以下是本篇文章正文内容:

一、数据类型

C语言的数据类型是编程中非常重要的一部分,它们对于内存管理、数据操作、代码质量、程序性能和兼容性都有着直接影响。

  • 内存管理: 不同的数据类型占据不同大小的内存空间,了解数据类型可以帮助我们有效地管理内存。
  • 数据存储和操作: 数据类型定义了数据的特性和可进行的操作。例如,整数类型可以进行加减乘除等算术运算,字符类型可以表示文本数据,数组类型可以存储一系列相同类型的数据等。
  • 提高代码可读性和可维护性: 使用合适的数据类型可以使代码更易读、易懂,并且方便后续的维护工作。
  • 提高程序性能: 选择合适的数据类型可以提高程序的执行效率。较小的数据类型通常需要更少的内存空间,可以减少内存使用量和访问时间。
  • 兼容性和可移植性: 数据类型在不同的平台和编译器中可能会有差异。了解和正确使用C语言的数据类型可以增加代码的兼容性和可移植性,使程序能够在不同环境下正常运行。

那么,让我们来看一下C语言的数据类型:

数据类型 名称 所占字节(32位)
char 字符型 1
short 短整型 2
int 整型 4
long 长整型 4
long long 更长的整型 8
float 单精度浮点数 4
double 双精度浮点数 8
  • 查看数据类型的代码:
#include <stdio.h>
int main()
{
	//计算各种数据类型的大小(单位是 字节)
    printf("char:%d\n", sizeof(char));
    printf("short:%d\n", sizeof(short));
    printf("int:%d\n", sizeof(int));
    printf("long:%d\n", sizeof(long));
    printf("long long:%d\n", sizeof(long long));
    printf("float:%d\n", sizeof(float));
    printf("double:%d\n", sizeof(double));

    return 0;
}
  • 运行结果:
    【C语言----数据类型】,C语言,c语言,算法,开发语言

我们可以用 sizeof 关键字 来看一下他们各自所占空间的大小(单位为字节)。

  • 字节:
  • 由上面的知识我们可以接触到一个新概念:字节。我们生活中有很多类似的计量单位,如:电脑C盘、D盘的内存,手机常见的128G、256G,512G内存等,还有我们上网时所用到的流量200M流量、500G流量、1TB流量等等。

  • 计算机中常见的存储单位主要有:bit(位)、B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)、TB(太字节)、PB(拍字节)。
  • 字节是存储数据的基本单位,并且是硬件所能访问最小单位。内存中存储数据的最小单位是“位”。字节是存储数据的基本单位,位是存储数据的最小单位,不要混淆了。C语言中一个字节通常由8位二进制数组成,可以表示256个不同的值,范围是从0到255。
  • 内存里面存放的全是二进制代码。内存里面有很多“小格子”,每个“格子”中只能够存放一个0或者1。一个“小格子”就是一(bit),所以“位”要么是0,要么是1,不会有比 “ 位 ” 更小的单位。
    【C语言----数据类型】,C语言,c语言,算法,开发语言
  • 8个“小格子”就是一字节,即一字节等于8位。(字节Byte,缩写 B)
    常见存储单位的换算关系:8Bit = 1B;1024B = 1KB;1024KB = 1MB;1024MB = 1GB;1024GB = 1TB;1024TB = 1PB。

二、变量

1.什么是变量?

现实生活中我们会找一个盒子来存放物品,一来显得不那么凌乱,二来方便以后找到。计算机也是这个道理,我们需要先在内存中找一块区域,规定用它来存放数值,并起一个好记的名字,只要这个盒子还在,数值就会一直被保存,并且可以自由的取出和更改数值。
【C语言----数据类型】,C语言,c语言,算法,开发语言

2.变量的定义

程序中用到的变量 必须 “先定义,后使用”。

1.不完全初始化:
数据类型 变量名

int a;
int b; 
int num;//此时a,b,num的值是随机值

2.初始化:
数据类型 变量名 = 初始化

int a = 10;
int b = 20;
int num = 999; //声明时初始化

int x; 
x = 999; //先声明变量 x,后初始化为 999

3. 连续定义多个变量:
数据类型 变量名= 初始化 变量名 = 初始化 变量名 = 初始化

注意:连续定义多个变量需要拥有相同数据类型,变量可以初始化,也可以不初始化。

//中间以逗号(,)隔开,结尾以分号(;)结束
int a = 10, b = 20 , num = 999;//初始化
int a, b, num; //不初始化

char M, N, P;
int a, b, c;  //两个不同类型定义时需分别定义

3.变量的命名

变量的命名:

1. 只能由字母、数字、下划线组成,且第一个字符不能数字
2. C语言的标识符是 区分 大小写的,即一个字母的大小写,被认为是两个不同的字符
3. 不能使用 关键字 做为变量名

4.全局变量 和 局部变量

全局变量具有全局作用域,它可以在整个程序中的任何地方访问。

局部变量具有局部作用域,它只能在定义它的花括号{ }内访问。

例如:

#include <stdio.h>

int z = 20;//全局变量

int main()
{
    int x = 10;//局部变量
    int y = 20;//局部变量
    
    return 0;
}

那假如我们将全局变量和局部变量初始化为同名时,又该使用哪个值呢?
我们可以用一段代码来判断:

#include <stdio.h>
int year = 2023;//全局变量
int main()
{
    int year = 2022;//局部变量
    printf("现在是 %d 年\n", year);
    
    return 0;
}

【C语言----数据类型】,C语言,c语言,算法,开发语言
由此可见,当局部变量和全局变量同名的时候,局部变量优先使用

5.变量的 作用域 和 声明周期

作用域:

通常来说,作用域 指变量在程序中可见的范围。

生命周期:

生命周期 指的是变量或对象存在的时间范围。

变量的作用域和生命周期:

作用域 生命周期 默认值
普通全局变量 程序运行就创建,程序退出就销毁 都可以用,也可以被其他文件引用 0
静态全局变量 程序运行就创建,程序退出就销毁 不可以被其他文件引用 0
普通局部变量 进入该函数就创建,退出该函数就销毁 只在函数内部有效 随机值
静态局部变量 第一次进入该函数时创建,直到整个程序退出才销毁 在函数内部有效 0

三、常量

1.常量的定义

  • 常量,表示一些固定的数据,也就是不能改变的数据。例如性别,男孩子女孩子,圆周率π等等这些固定且不会变的。(你要非说想去泰国,我只能说佩服你)

2.常量的分类

  • #define 定义的标识符常量
  • const 修饰的常变量
  • 字面常量
  • 枚举常量

我们可以由下面这段代码来理解:

#include <stdio.h>
enum Sex
{
 MALE,
 FEMALE,
 SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
    //字面常量演示
    // 3.1415926;  //字面常量
    // 2022;  //字面常量
    
    //const 修饰的常变量
    const float p = 3.14f;   //这里的p是const修饰的常变量
    pai = 5.14;//是不能直接修改的!    
    //#define的标识符常量 演示
    #define NUM 100
    printf("num = %d\n", NUM);
    
    //枚举常量演示
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    //注:枚举常量的默认是从0开始,依次向下递增1的
    //也可赋值依次递增
     
    return 0;
}

3.常见的常量类型

整型常量:

  • 十进制整数。
    例如:666-1200
  • 八进制整数,八进制形式的常量都以 0 开头。
    例如: 0123,也就是十进制的 83-011 , 也就是十进制的 -9
  • 十六进制整数,十六进制的常量都是以0x开头。
    例如:0x123,也就是十进制的 291
  • 二进制整数,逢二进一,0b开头。
    例如: 0b0010,也就是十进制的 2

实型常量:

  • 小数形式
  • 单精度小数:以字母 f 或字母 F 结尾。
    例如:0.0f、1.01f
  • 双精度小数:十进制小数形式。
    例如:3.14、 6.66
  • 默认就是双精度
  • 可以没有整数位只有小数位。
    例如: .3、 .6f

  • 指数形式
  • 以幂的形式表示,以字母 e 或字母 E 后跟一个以10为底的幂数
    例如:
    C语言中的 2E32e3 表示数学中的 2 × 10 ²
    C语言中的 1.23e41.23E4 表示数学中的 1.23×10⁴,即 12300
  • 字母 E / e 后面的指数必须整数
  • 字母 E / e 前后必须要有数字
  • 字母 E / e 前后不能空格

字符常量:

  • 字符型常量都是用 ' ' (单引号)括起来的。
    例如: ‘a’‘b’‘c’
  • 字符常量的单引号中只能有一个字符
  • 特殊情况: 如果是转义字符,单引号中可以有两个字符。
    例如: ’\n’表示回车、’\t’表示制表符

字符串常量:

  • 字符型常量都是用 " " (双引号) 括起来的。
    例如:“a”“abc”“xiaoming”
  • 系统会自动在字符串常量的末尾加一个字符'\0'作为字符串结束标志

自定义常量:

此处先不用了解,后期涉及到的时候再讲

四、字符串和转义字符

1. 字符串

由上面常量涉及到的字符串,我们可以更为细致的总结一下:

“hello 小明”
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串


注:字符串的结束标志是一个 \0 的转义字符。这个 \0 在计算字符串长度的时是 \0 是结束标志,不算作字符串内容。

让我们用两段代码来探究一下 \0 的具体作用:

#include <stdio.h>
int main()
{
    char arr1[] = "ming";
    char arr2[] = {'m', 'i', 'n','g'};
    char arr3[] = {'m', 'i', 'n','g', '\0'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0;
}

执行结果:
【C语言----数据类型】,C语言,c语言,算法,开发语言

由此可见,在没有 \0 做结尾时,arr2 在打印完 ming 后又随机打印了一段我们不需要的字符串,这是因为在初始化字符串数组时,只初始化了’m’, ‘i’, ‘n’,‘g’,而没有’\0’,所以当printf函数读到’g’时不会停止,它会一直往后走直到找到’\0’才会停止。

然后我们在通过strlen函数求一下三个字符串的长度,来观察一下有 \0 和没有 \0 的区别:

#include <stdio.h>
#include <string.h>
int main()
{
    char arr1[] = "ming";
    char arr2[] = { 'm', 'i', 'n','g' };
    char arr3[] = { 'm', 'i', 'n','g', '\0' };

    printf("arr1: %d\n", strlen(arr1));
    printf("arr2: %d\n", strlen(arr2));
    printf("arr3: %d\n", strlen(arr3));

    return 0;
}

执行结果:
【C语言----数据类型】,C语言,c语言,算法,开发语言

由上面可以看出,有 \0 的 arr1 和 arr3 两个字符串正常求得长度为4,而我们没有 \0 做结尾的 arr2 则求到了一个随机值16,这说明我们在求完长度后没有停止,一直往后找了12才遇到 \0 。

2.转义字符

通俗的讲,转义字符就是一种特殊的字符,这种字符是以反斜杠 \ 开头,用于实现特殊的要求。

转义字符 含义
\n 换行,从当前位置移到下一行
\t 水平制表符(跳到下一个tab位置)
\v 垂直制表符
\b 退格
\r 回车
\’ 单撇号字符
\‘’ 双撇号字符
\\ 表示一个反斜杠,以防被解释为一个转义序列符
\? 问号,以防被解释为三字母词
\ddd ddd表示1~3位八进制的数字
\xdd dd表示1~2位十六进制数字
\0 空字符

最后的最后,小明为大家准备了一段代码,大家可以自己研究一下结果:

#include <stdio.h>
int main()
{
    printf("\"hr\bi\'\40mil\bng!\"!\b\n");

    return 0;
}

运行结果:
【C语言----数据类型】,C语言,c语言,算法,开发语言

完结

好啦,阅读到这里就已经看完了本期博客的全部内容了
【C语言----数据类型】,C语言,c语言,算法,开发语言文章来源地址https://www.toymoban.com/news/detail-651118.html

到了这里,关于【C语言----数据类型】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [go语言]数据类型

    目录 知识结构 整型、浮点型 1.整型 2.浮点型 复数、布尔类型 1.复数 2.布尔类型 字符与字符串 1.字符串的格式化 2.字符串的截取 3.格式化好的字符串赋值给量 4.字符串的转换 5.strings包 在Go语言中,整型数据是一种基本的数据类型,用于表示整数。Go语言提供了多种整型数据类

    2024年01月19日
    浏览(54)
  • Go 语言基本数据类型

    Go 语言中数据类型分为:基本数据类型和复合数据类型 基本数据类型有: 整型、浮点型、布尔型、字符串 复合数据类型有: 数组、切片、结构体、函数、map、通道(channel)、接口等。 整型分为以下两个大类: 有符号整型按长度分为:int8、int16、int32、int64 对应的无符号整

    2024年01月22日
    浏览(68)
  • C语言-数据类型

    数据类型 中文名称 空间大小(bite - 字节) char 字符串数据类 1 short (int) 短整型 2 int 整形 4 long 长整形 4 long long 更长的整形 8 float 单精度浮点数 4 double 双精度浮点数 8 sizeof() - -操作符 - 计算类型或者变量所占空间的大小 单位是字节byte 计算大小以节省空间 bit - 比特位 计

    2024年02月08日
    浏览(32)
  • 【C语言----数据类型】

    提示:本篇文章为C语言数据类型的个人总结,内容如若有误,请及时联系我更正。 如若转载请注明原创,谢谢。 大家好,我是小明,很抱歉由于个人原因断更了一段时间,从今天开始恢复正常更新,今天总结的是C语言数据类型相关知识。 提示:以下是本篇文章正文内容:

    2024年02月12日
    浏览(27)
  • C语言——数据类型

    变量就是在程序中可以发生变化的量,变量有类型。 变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。(1字节=8位) 例如:(auto) int a; 变量名是标识符,要符合标识符命名规则。 存储类型:变量存储的位置。 数据类型包含:名字 字节 取值范围 类型 存储大

    2024年02月04日
    浏览(25)
  • 01- 数据类型(C语言)

    1、在我们所写的“第一个C程序”中出现了很多的标识符,例如 include 、 main 、 printf 、 return 。标识符是⽤来标识 变量 、 函数 ,或任何其他⽤户 ⾃定义项⽬的名称 。 2、标识符的约束规范: 只能包含 数字、字母 和 下划线 不能以数字开头 区分大小写 1. 当我们在使用C语言

    2024年02月09日
    浏览(33)
  • R语言01-数据类型

    数值型(Numeric):用于存储数值数据,包括整数和浮点数。例如:x - 5。 字符型(Character):用于存储文本数据,以单引号或双引号括起来。例如:name - “John”。 逻辑型(Logical):用于存储布尔值,即TRUE或FALSE。用于表示逻辑条件的真假。例如:is_student - TRUE。 因子型(

    2024年02月11日
    浏览(31)
  • C语言参悟-数据类型

    编程语言为抽象这个物理世界提供了依据,其中对于描述物理世界的情况提供了一个叫做数据类型的名字,这种数据类型是我们人类能够认识的东西,就像数字,字母,字符之类的。 C语言中也提供了数据类型这种说法,就像下面的图片里面猴子,我们用C语言描述图片里面的

    2024年02月14日
    浏览(37)
  • C语言——自定义数据类型

    C语言自定义数据类型——结构体、共用体、枚举 结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” ,其描述了一块内存区间的大小及解释意义。 举例:构造一个新的数据类型叫student,用来描述学生。 1.3.1 概念 通过结构体数

    2024年02月06日
    浏览(38)
  • Go语言上手:复合数据类型

    之前我们初探了Go语言世界,了解到基本数据类型,为了满足不同的特殊需求,我们便要使用到以不同的方式组合基本类型构造出来了新的复合型数据类型——数组、结构体、slice、map。 数组是由一个或多个相同类型的元素组成的固定长度的序列。 例如: 一维数组: 二维数

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包