当前位置: 首页 > news >正文

2-C语言中的数据类型

一.字节

字节是计算机中用于衡量和操作数据的基本单位

详细解释:

1.物理层面

计算机底层只能处理0和1(二进制),每个0或1被称为一个比特

最初,计算机设计者需要规定一次处理多少比特。一个字节就是一组固定数量的比特的集合。虽然历史上字节的大小有过变化,但自20世纪70年代以来,1个字节=8个比特已经成为绝对的标准

2.容量角度

字节是基本单位,可以用它来衡量数据量的大小

  • 1字节可以存储1个英文字母
  • 更大的单位如下:1KB = 1024字节;1MB = 1024KB;1GB = 1024MB;1TB = 1024GB
  • 我们的文件大小、硬盘容量、内存大小,都是用字节及其衍生单位来衡量的

3.编码的角度

计算机如何用字节表示文字?通过编码

  • ASCII编码:最早也是最著名的编码之一。它规定用1个字节(8位)来表示英文字符、数字和符号。   例如:字节01000001代表A,00110001代表数字1
  • Unicode编码:为了容纳全球所有语言的字符,出现了Unicode。最常用的UTF-8是Unicode的一种实现方式,它用1到4个不等的字节来表示一个字符;   如,英文字符A仍然用1个字节表示:01000001     中文字符“中”则需要用3个字节表示:11100100  10111000  10101101

字节的重要性:

1.它是寻址的基础:计算机内存中的每一个字节都有一个唯一的“门牌号”(称为内存地址),CPU通过这个地址来准确地找到需要的数据

2.它是数据的原子:几乎所有的高级数据类型(如整数、浮点数、字符串)在内存中都是由一个或多个连续的字节组成的

2.它是标准化的结果:8位字节的确立,使得不同厂商的hardware和software之间能够互通有无,是现代计算机产业发展的基石

简单来说,字节就是计算机世界里那个不可或缺的“基本粒子”,是连接底层硬件(0和1)与上层应用(文字、图片、程序)的桥梁

二.C语言中的数据类型

1.整数类型

C语言通过不同的类型修饰符组合,提供了多种整数类型,其主要区别在于:取值范围和占用内存大小

通用语法: [修饰符] int [变量名]

其中int有时可以直接省略

1.基本整型 int

大小通常为4字节

取值范围为-2^31 ~ 2^31 - 1

示例 int count = 100;

2.短整型short(short int)和长整型long(long int)long long (long long int)

  • short:大小通常为2字节  取值范围为-2^15 ~ 2 ^15 - 1        示例:short temperature = -10;
  • long:在32位系统上通常为4字节,在Linux/Unix系统上通常为8字节(在64Windows上仍为4字节)  取值范围:4字节时同int;8字节时为-2^63 ~ 2^63 - 1      字面量后缀:建议使用L,如1000000L             示例:long big_number = 1234567890L;
  • long long:大小通常为8字节(C99标准引入)     取值范围:与8字节的long相同             字面量后缀:使用LL    示例:long long huge_number = 9223372036854115807LL;

3.无符号整型(使用unsigned修饰)

只能表示零和正数,因此正数范围比对应的有符号类型大一倍

  • unsigned int:大小:通常为4字节    取值范围:0 ~ 2^32 - 1    示例:unsigned int student_id = 4294967295;
  • unsigned short:大小:通常为2字节  取值范围:0 ~ 2^16 - 1
  • insigned long:大小:4或8字节   取值范围:4字节时0 ~ 2^32 - 1;8字节时0 ~ 2^64 - 1      示例:unsigned long file_size = 1024UL;    其中UL是一个字面量后缀,它用来明确告诉编译器,这个数字常量的类型是什么   U代表Unsigned(无符号),L代表Long(长整型)                      为什么需要这样做:1.避免编译器警告和隐式转换。没有后缀时,如1024默认类型是int,当你把它赋值给一个unsigned long 变量时,编译器需要做一个隐式类型转换。这在大多数情况下没有问题,但在某些严格或需要精确定义的场景下,直接使用类型匹配的字面量是更好的实践         2.确保运算结果的正确性      注意:对于整数,小写l容易和数字1混淆,建议使用大写L
  • unsigned long long :通常为8字节   取值范围:0 ~ 2^64 - 1

4.字符型char

char本质上1字节的整数,主要用于存储字符

1.char

大小:1字节

取值范围:取决于编译器,可能是sigend char 或者 unsigned char。通常默认为-128 ~ 127

示例:char c = 'A'; (存储的是ASCII值65)

2.signed char

明确指定为有符号

取值范围:-128 ~ 127

3.unsigned char

明确指定为无符号

取值范围:  0 ~ 255

用途:常用于处理原始二级制数据

三.sizeof的用法

sizeof是C语言中一个非常重要且独特的运算符(不是函数!),用于计算其操作数所占用的内存大小,单位是字节

基本语法:(两种使用形式)

1.sizeof(类型)

2.sizeof(表达式)或sizeof 变量名

具体用法与示例:

1.对数据类型使用(必须带括号)

#include <stdio.h>int main() {printf("Size of char: %zu bytes\n", sizeof(char));printf("Size of int: %zu bytes\n", sizeof(int));printf("Size of short: %zu bytes\n", sizeof(short));printf("Size of long: %zu bytes\n", sizeof(long));printf("Size of float: %zu bytes\n", sizeof(float));printf("Size of double: %zu bytes\n", sizeof(double));return 0;
}

其中%zu是C语言中函数族的一个格式说明符,专门用于格式化size_t类型的变量

  • z是一个长度修饰符,它告诉 printf:"后面要打印的是一个与 size_t 类型大小相匹配的整数"。
  • u:这是类型说明符,表示这是一个无符号十进制整数

所以,%zu 合起来的意思就是:"打印一个无符号的 size_t 类型的整数"

为什么 sizeof 的返回值要用 %zu

因为 sizeof 运算符的返回类型就是 size_tsize_t 是一个在 <stddef.h><stdio.h> 等标准头文件中定义的无符号整数类型,它的大小是平台相关的,足以表示该平台上任何对象的大小。

  • 在 32 位系统上,size_t 通常等价于 unsigned int(4 字节)。

  • 在 64 位系统上,size_t 通常等价于 unsigned long(8 字节)。

使用 %zu 可以保证无论在什么平台上,都能正确、安全地打印出 size_t 的值。

2.对变量使用(括号可选)

可以直接对变量使用 sizeof,这时括号是可选的,但加上括号是更常见的风格,可读性更好。

#include <stdio.h>int main() {int num = 10;double price = 20.5;char ch = 'A';// 以下两种方式都是正确的printf("Size of num: %zu bytes\n", sizeof(num)); // 推荐,带括号printf("Size of price: %zu bytes\n", sizeof price);   // 不带括号printf("Size of ch: %zu bytes\n", sizeof(ch));return 0;
}

http://www.dtcms.com/a/457619.html

相关文章:

  • 免费企业营销网站制作公司建网站有何意义
  • LeetCode算法日记 - Day 66: 衣橱整理、斐波那契数(含记忆化递归与动态规划总结)
  • 建行官方网站网站模块数据同步
  • HTTP 协议的基本格式
  • 【代码】洛谷 P6150 [USACO20FEB] Clock Tree S [思维]
  • 专业做网站的公司哪家好西宁网站建设公司
  • 信息安全基础知识:06认证技术
  • 哪一个网站做专栏作家好点橙色企业网站模板
  • 【区间DP】戳气球 题解
  • Ventoy下载和安装教程(图文并茂,非常详细)
  • 无向图的回路检测(广度优先并查集)
  • 磁悬浮轴承损耗:深度解析损耗机理与降耗之道
  • AI大模型赋能药物研发:破解“双十困局”的跨界革命
  • 哲林高拍仪网站开发宁波南部商务区网站建设
  • 经典的逻辑函数化简算法 Espresso
  • ZKEACMS:基于ASP.Net Core开发的开源免费内容管理系统
  • 【QT常用技术讲解】opencv实现摄像头图像检测并裁剪物体
  • 深圳建网站哪个好网页设计实训总结3000字大学篇
  • 【密码学实战】openHiTLS mac命令行:消息认证码工具
  • 沙井网站建设石林县工程建设个体交易网站
  • Chromium 138 编译指南 - Android 篇:安装构建依赖项(七)
  • asp 绿色环保企业网站源码 v1.1golang 做网站
  • 第4章 C++多线程系统编程精要
  • 绵阳网站怎样做网站设计要交税吗
  • 同ip网站有什么影响网站建设论文500字
  • 基于springboot的家具商城销售系统
  • 手机版网站制作佛山建站软件
  • 厦门南希网站建设微信应用程序开发
  • 【STM32项目开源】基于STM32的智能厨房火灾燃气监控
  • 最新彩虹云商城二开Pro美化版 新增超多功能 全开源