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

【C语言指南】数据类型详解(上)——内置类型

           💓 博客主页:倔强的石头的CSDN主页 

           📝Gitee主页:倔强的石头的gitee主页

            ⏩ 文章专栏:《C语言指南》

                                  期待您的关注

 

47f09392526c71b5885ec838a3ea7ffe.gif

 

目录

引言

1. 整型(Integer Types)

2. 浮点型(Floating-Point Types)

3. 字符型(Character Types)

4. 布尔型(Boolean Types,模拟)

 

结语


C语言自定义类型的详解可参考下一篇文章:

【C语言指南】数据类型详解(下)——自定义类型-CSDN博客

 

引言

在C语言的世界里,其内置数据类型是编程世界的基石。这些数据类型由C语言标准直接定义,无需用户额外定义即可直接使用,它们构成了程序中最基本的元素。

 

本文将详细探讨C语言中的内置数据类型,包括整型、浮点型、字符型以及布尔型(虽然C99之前标准C没有直接的布尔类型,但通常使用_Bool或宏定义来模拟),并对每种类型的使用场景、存储方式及注意事项进行详细说明。

1. 整型(Integer Types)

整型用于存储整数值,包括正数、负数和零。

C语言提供了多种整型,以适应不同大小和范围的整数需求。

  • 基本整型(int最常见的整型,其大小和范围取决于编译器和平台。在大多数现代系统上,int通常占用4个字节(32位),能表示的范围大约是-2,147,483,648到2,147,483,647(对于有符号整数)或0到4,294,967,295(对于无符号整数)。

  • 短整型(short 或 short int:比int更小的整型,通常占用2个字节(16位)。其范围也相应减小,适用于需要节省内存空间的场合。

  • 长整型(long 或 long int:比int更大的整型,至少占用4个字节,但在64位系统上通常占用8个字节。long longlong long int是C99标准引入的,用于表示更大的整数,其大小至少为long的两倍。

  • 无符号整型:在基本整型前加unsigned关键字,表示只能存储非负数值。无符号整型能表示的正数范围是有符号整型的两倍(因为不需要表示负数)。

  • 有符号整型与无符号整型的转换:在表达式中混合使用有符号和无符号整型时,有符号整型会被隐式转换为无符号整型,这可能导致意外的结果,特别是当有符号整型值为负数时。

2. 浮点型(Floating-Point Types)

浮点型用于存储带小数点的数值,包括正数、负数和零

C语言提供了三种浮点类型。

  • 单精度浮点型(float:通常占用4个字节,提供大约7位十进制精度的浮点数运算。适合一般精度的科学计算和工程计算。

  • 双精度浮点型(double:至少占用8个字节,提供大约15到17位十进制精度的浮点数运算。是float类型的超集,用于需要更高精度的场合。

  • 扩展精度浮点型(long double:至少与double有相同的精度,但具体实现可能有所不同。在某些平台上,long double可能占用10字节或更多,以提供更高的精度和范围。

 

3. 字符型(Character Types)

字符型用于存储单个字符,如字母、数字或符号。

  • 字符型(char:通常占用1个字节,可以是有符号的(signed char)或无符号的(unsigned char)。默认情况下,char可能是有符号的也可能是无符号的,这取决于编译器和平台。char类型不仅可以用来存储字符,还可以作为小型整数使用,因为字符在计算机内部是以整数形式存储的。

  • 宽字符型(wchar_t:是C99标准引入的,用于表示宽字符(如Unicode字符)。其大小足以存储实现定义的本地环境中的任何字符集中的任何字符。

 

4. 布尔型(Boolean Types,模拟)

虽然C99之前的标准C没有直接的布尔类型,但通常使用_Bool关键字(C99引入)或宏定义(如#define TRUE 1#define FALSE 0)来模拟布尔类型。

从C99开始,<stdbool.h>头文件提供了booltruefalse的定义,使得布尔类型的使用更加直接和方便。

结语

C语言的内置数据类型为程序员提供了丰富的选项来存储和处理各种类型的数据。了解并掌握这些类型,是编写高效、安全C程序的基础。

在后续的文章中,我们将探讨C语言的自定义类型,包括结构体、联合体、位字段以及类型定义(typedef),这些类型将进一步扩展C语言的数据表示能力。

 

自定义类型参考下一篇文章:

【C语言指南】数据类型详解(下)——自定义类型-CSDN博客

 

相关文章:

【C语言指南】数据类型详解(上)——内置类型

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C语言指南》 期待您的关注 目录 引言 1. 整型&#xff08;Integer Types&#xff09; 2. 浮点型&#xff08;Floating-Point …...

视频汇聚/视频存储/安防视频监控EasyCVR平台RTMP推流显示离线是什么原因?

视频汇聚/视频存储/安防视频监控EasyCVR视频汇聚平台兼容性强、支持灵活拓展&#xff0c;平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 EasyCVR安防监控视频综合管理平台采用先进的网络传输技术&#xff0…...

联想电脑怎么开启vt_联想电脑开启vt虚拟化教程(附intel和amd主板开启方法)

最近使用联想电脑的小伙伴们问我&#xff0c;联想电脑怎么开启vt虚拟。大多数可以在Bios中开启vt虚拟化技术&#xff0c;当CPU支持VT-x虚拟化技术&#xff0c;有些电脑会自动开启VT-x虚拟化技术功能。而大部分的电脑则需要在Bios Setup界面中&#xff0c;手动进行设置&#xff…...

手把手教你使用YOLOv11训练自己数据集(含环境搭建 、数据集查找、模型训练)

一、前言 本文内含YOLOv11网络结构图 训练教程 推理教程 数据集获取等有关YOLOv11的内容&#xff01; 官方代码地址&#xff1a;https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models/11 二、整体网络结构图 三、环境搭建 项目环境如下&#xf…...

LabVIEW界面输入值设为默认值

在LabVIEW中&#xff0c;将前面板上所有控件的当前输入值设为默认值&#xff0c;可以通过以下步骤实现&#xff1a; 使用控件属性节点&#xff1a;你可以创建一个属性节点来获取所有控件的引用。 右键点击控件&#xff0c;选择“创建” > “属性节点”。 设置属性节点为“D…...

【Android 14源码分析】Activity启动流程-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…...

Java 中 synchronized 和 Thread 的使用场合介绍

在 Java 编程中&#xff0c;synchronized 和 Thread 是处理并发与多线程编程的关键工具。多线程编程是为了在单一程序中并行执行多个任务&#xff0c;Java 提供了丰富的 API 和关键字以实现这一目标&#xff0c;而其中 synchronized 和 Thread 是非常基础和重要的部分。 synch…...

爬虫库是什么?是ip吗

爬虫库通常指的是用于网页爬虫&#xff08;Web Scraping&#xff09;开发的代码库或框架&#xff0c;它不是IP地址。以下是关于爬虫库的详细解释&#xff1a; 爬虫库的定义 爬虫库是一些用于简化网络数据抓取过程的工具和框架&#xff0c;通常提供了一系列函数和类&#xff0…...

【MySQL】查询原理 —— B+树查询数据全过程

使用B树作为索引结构的原因&#xff1a; 一种自平衡树&#xff1a; B树在插入和删除的时候节点会进行分裂和合并操作&#xff0c;以保持树的平衡&#xff0c;存在冗余节点&#xff0c;使得删除的时候树结构变化小&#xff0c;更高效。 高度不会增长过快&#xff0c;查询磁盘I…...

系统设置 WIFI输入框被挡住解决方案

文章目录 问题点复现的场景机器横屏可复现&#xff0c;竖屏不存在跟density 相关的。 解决问题方案设置输入模式路径 部分源码跟踪方法 延伸思考设置输入模式设置主题 问题点 进入系统设置-网络和互联网-WLAN-点击WIFI item ,密码输入框被遮挡&#xff0c;输入的密码不可见.如…...

SpringCloud无法注册Nacos和配置中心

今天升级SpringCloud版本&#xff0c;导致服务无法注册到nacos&#xff0c;使用nacos作为配置中心也无法刷新配置信息&#xff0c;后来发现是因为只更新了SpringCloud版本&#xff0c;SpringCloud-Alibaba没有更新导致的问题。 升级出现问题的版本是&#xff1a; <dependen…...

word2vector训练数据集整理(代码实现)

import math import os import random import torch import dltools from matplotlib import pyplot as plt #读取数据集 def read_ptb():"""将PTB数据集加载到文本行的列表中"""with open(./ptb/ptb.train.txt) as f:raw_text f.read()return…...

无心上班,只想为祖国庆生?让ChatGPT帮你搞定工作!

国庆假期临近&#xff0c;大家的心早已飞向诗和远方了吧。 然而&#xff0c;现实总是无情地将我们拉回到堆积如山的工作任务上&#xff1a;紧急报告的截止日期就在眼前&#xff0c;复杂的项目策划还未动笔&#xff0c;客户的定制需求迫在眉睫。每年的这个时候&#xff0c;如何…...

【Python】YOLO牛刀小试:快速实现视频物体检测

YOLO牛刀小试&#xff1a;快速实现视频物体检测 在深度学习的众多应用中&#xff0c;物体检测是一个热门且重要的领域。YOLO&#xff08;You Only Look Once&#xff09;系列模型以其快速和高效的特点&#xff0c;成为了物体检测的首选之一。本文将介绍如何使用YOLOv8模型进行…...

Vscode超好看的渐变主题插件

样式效果&#xff1a; 插件使用方法&#xff1a; 然后重启&#xff0c;之后会显示vccode损坏&#xff0c;不用理会&#xff0c;因为这个插件是更改了应用内部代码&#xff0c;直接不再显示即可。...

OceanBase技术解析:自适应分布式下压技术

在《OceanBase 数据库源码解析》这本书中&#xff0c;关于SQL执行器的深入剖析相对较少&#xff0c;因此&#xff0c;希望增添一些实用且详尽的补充内容。 上一篇博客《 OceanBase技术解析&#xff1a; 执行器中的自适应技术》中&#xff0c;已初步介绍了执行器中几项典型的自适…...

Firebase和JavaScript创建Postback Link逻辑

Firebase是一个提供后端即服务(BaaS)的平台,它允许开发者快速构建应用程序而无需管理服务器。Firebase不直接提供生成Postback Link的功能,但您可以使用Firebase的功能来构建和管理URL,然后在客户端使用这些URL来实现Postback。 以下是如何使用Firebase和JavaScript来创建…...

docker配置daemon.json文件

报错 &#xff1a;Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 解决方法 配置加速地址 vim /etc/docker/daemon.json添加以下内容 {"registry-mirro…...

【08】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Scroll容器与Tabs组件

序言&#xff1a; 本文详细讲解了关于我们在页面上经常看到的可滚动页面和导航栏在鸿蒙开发中如何用Scroll和Tabs组件实现&#xff0c;介绍了Scroll和Tabs的基本用法与属性。 笔者也是跟着B站黑马的课程一步步学习&#xff0c;学习的过程中添加部分自己的想法整理为笔记分享出…...

苏州 数字化科技展厅展馆-「世岩科技」一站式服务商

数字化科技展厅展馆设计施工是一个综合性强、技术要求高的项目&#xff0c;涉及到众多方面的要点。以下是对数字化科技展厅展馆设计施工要点的详细分析&#xff1a; 一、明确目标与定位 在设计之初&#xff0c;必须明确展厅的目标和定位。这包括确定展厅的主题、目标受众、展…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...