深入理解 C 语言基本数据类型:从常量变量到输入输出
深入理解 C 语言基本数据类型:从常量变量到输入输出
在 C 语言的世界里,数据是程序运行的核心,而对数据类型的掌握则是编写高效、准确程序的基础。今天,就让我们一起深入探讨 C 语言中的基本数据类型。
一、数据的表现形式
在 C 语言中,数据有常量和变量两种表现形式。
- 常量:在程序运行过程中,值不能被改变的量就是常量。
- 整型常量:像 1、2、-100 这些不带小数点的数,还有像 (56) O(八进制)、(8A) H(十六进制)等都是整型常量。
- 实型常量:有十进制小数形式,如 123.456;还有指数形式,比如 12.34e3(表示) ,不过要注意 e 或 E 前后的规则哦,e 和 E 之前必须有数字,且后面必须为整数。
- 字符常量:分为普通字符常量,用单引号括起来的一个字符,如’a’;还有转义字符,以 \ 开头,像’\n’表示换行,’\t’表示水平制表符。
- 字符串常量:用双引号括起来的若干字符,比如”ABC”,可别和单引号括起来的字符常量搞混啦。
- 符号常量:通过 #define 指令定义,例如 #define PI 3.1415926,用一个符号代表一个常量,方便又实用。
- 地址常量:每个常量、变量、数组的地址在程序运行期间都不会改变,这就是地址常量。
- 变量:变量的值在程序运行中是可以改变的。它代表一个有名字、具有特定属性的存储单元。使用变量前必须先定义,而且变量名要符合标识符命名规则,只能由字母、数字、下划线组成,并且以字母或下划线开头,同一作用域内不能重名,也不能是关键字。
二、数据类型
在计算机运算中,指定数据类型很重要。因为计算机的存储单元是有限的,和数学运算有所不同。数学运算精准且数值不分类型,而计算机中数据存放在存储单元,存储单元由有限字节构成,存放数据范围有限。比如 1/3 在数学中是无限循环小数,但在计算机中以 % f 格式输出只有 6 位小数。
- 整型数据类型:包括有符号和无符号的,像 int(普通整型,2 或 4 字节 ,范围 -32768 ~ 32767)、unsigned int(无符号整型)、short(短整型,2 字节)、long(长整型,4 字节)等。可以用 sizeof (数据类型) 来获取数据类型占用的字节数。
- 字符型:char 类型占 1 字节,其取值范围遵循 ASCII 码表。普通字符按 ASCII 码存储,不过存储其他文字字符时,像中文,可能占 2 个或多个字节,有时会按 4 个字节处理 。
- 浮点型:用于表示带小数点的实数。在 C 语言中,实数以指数形式存储,小数点位置可浮动,所以叫浮点数。有 float(单精度,4 字节)、double(双精度,8 字节)、long double(长双精度,8 或 16 字节 )。
- 确定常量的类型:从常量表示形式判断。单引号括起来的单个字符或转义字符是字符常量;不带小数点的数值是整型常量,但要注意范围,末尾加 L 或 l 是长整型,加 LL 或 ll 是长长整型;小数形式或指数形式的实数是浮点型常量,末尾加 F 或 f 是单精度,加 L 或 l 是 long double 类型。
三、格式化输入输出函数
输入输出是程序的基本操作,C 语言提供了标准输入输出函数,使用时要在程序开头用 #include 加载相关头文件,如 stdio.h。
- printf 函数(格式化输出函数):一般格式为 printf (格式控制,输出列表)。
- 格式控制:包含格式声明(如 % d、% c 等)和普通字符(如 \n、, 等)。格式声明用于将输出数据转换为指定格式,普通字符原样输出。
- 输出列表:是要输出的数据,可以是常量、变量或表达式。还能自定义输出分隔符和格式,通过指定域宽(如 %4d、%8.3f)来控制输出数据的显示宽度。
- scanf 函数(格式化输入函数):一般格式为 scanf (格式控制,地址列表) 。
- 变量作参数时,前面要加取地址符号 &。
- 如果格式控制字符串中有其他字符,输入时要对应输入相同字符。
- 输入数值型数据时,遇到空格、回车等非数值字符,数据输入结束。double 型数据输入用 % lf,输出可用 % f。输入时也能进行域宽控制。
- 字符型数据的输入和输出:putchar 用于输出字符型变量的值;getchar 用于从键盘输入一个字符存入变量,它还能起到类似 system ("pause"); 的暂停效果。
掌握好 C 语言的基本数据类型和输入输出函数,能让我们更好地编写程序,处理各种数据。希望这篇博客能帮助大家加深对这些知识的理解,在编程路上更进一步!
相关文章:
深入理解 C 语言基本数据类型:从常量变量到输入输出
深入理解 C 语言基本数据类型:从常量变量到输入输出 在 C 语言的世界里,数据是程序运行的核心,而对数据类型的掌握则是编写高效、准确程序的基础。今天,就让我们一起深入探讨 C 语言中的基本数据类型。 一、数据的表现形式 在 C …...
多线程-线程池的使用
1. 线程池 1.1 线程状态介绍 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么 Java 中的线程存在哪几种状态呢?Java 中的线程 状态被定义在了 java.lang.Thread.…...
计算机网络 IP 网络层 2 (重置版)
IP的简介: IP 地址是互联网协议地址(Internet Protocol Address)的简称,是分配给连接到互联网的设备的唯一标识符,用于在网络中定位和通信。 IP编制的历史阶段: 1,分类的IP地址: …...
Linux学习笔记——网络管理命令
一、网络基础知识 TCP/IP四层模型 以太网地址(MAC地址): 段16进制数据 IP地址: 子网掩码: 二、接口管命令 ip命令:字符终端,立即生效,重启配置会丢失 nmcli命令:字符…...
供应链系统设计-供应链中台系统设计(十)- 清结算中心概念片篇
综述 我们之前在供应链系统设计-中台系统设计系列(五)- 供应链中台实践概述文章中针对中台到底是什么进行了描述,对于中台的范围也进行划分,如下图所示: 关于商品中心,我们之前用4篇文章介绍了什么是商品中…...
C++,STL 简介:历史、组成、优势
文章目录 引言一、STL 的历史STL 的核心组成三、STL 的核心优势四、结语进一步学习资源: 引言 C 是一门强大且灵活的编程语言,但其真正的魅力之一在于其标准库——尤其是标准模板库(Standard Template Library, STL)。STL 提供了…...
OpenAI-Edge-TTS:本地化 OpenAI 兼容的文本转语音 API,免费高效!
文本转语音(TTS)技术已经成为人工智能领域的重要一环,无论是语音助手、教育内容生成,还是音频文章创作,TTS 工具都能显著提高效率。今天要为大家介绍的是 OpenAI-Edge-TTS,一款基于 Microsoft Edge 在线文本…...
手写instanceof、手写new操作符
文章目录 1 手写instanceof2 手写new操作符 1 手写instanceof instanceof:用于判断构造函数的prototype属性是否出现在对象原型链中的任何位置实现步骤: 获取类型的原型。获取对象的原型。一直循环判断对象的原型是否等于构造函数的原型对象,…...
29. C语言 可变参数详解
本章目录: 前言可变参数的基本概念可变参数的工作原理如何使用可变参数 示例:计算多个整数的平均值解析: 更复杂的可变参数示例:打印可变数量的字符串解析: 总结 前言 在C语言中,函数参数的数量通常是固定的ÿ…...
蓝桥杯python语言基础(5)——函数
目录 一、作业:四个函数 二、math 三、collections 1. Counter 2. deque 3. defaultdict 4. OrderedDict 四、heapq 五、functool partial偏函数 六、itertools 1.无限迭代器 2.有限迭代器 3.排列组合迭代器 一、作业:四个函数 计算最大公…...
node 爬虫开发内存处理 zp_stoken 作为案例分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言 主要说3种我们补环境过后如果用…...
006 LocalStorage和SessionStorage
JWT存储在LocalStorage与SessionStorage里的区别和共同点如下: 区别 数据有效期: • LocalStorage:始终有效,存储的数据会一直保留在浏览器中,即使窗口或浏览器关闭也一直保存,因此常用作持久数据。 • Se…...
USB鼠标的数据格式
USB鼠标的数据格式由HID(Human Interface Device)协议定义,通常包含3个字节的标准数据,具体格式如下: 字节内容描述第1字节按键状态Bit 0: 左键按下(1)<br>Bit 1: 右键按下(1…...
Hive:struct数据类型,内置函数(日期,字符串,类型转换,数学)
struct STRUCT(结构体)是一种复合数据类型,它允许你将多个字段组合成一个单一的值, 常用于处理嵌套数据,例如当你需要在一个表中存储有关另一个实体的信息时。你可以使用 STRUCT 函数来创建一个结构体。STRUCT 函数接受多个参数&…...
冯诺依曼系统及操作系统
目录 一.冯诺依曼体系结构 二.操作系统 三.系统调用和库函数概念 一.冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 截至目前,我们所认识的计算机,都是由一…...
E. Binary Search
题目链接:Problem - E - Codeforces 题目大意: 初始时有 l1,rn1。 如果当前 r−l1,退出二分查找,并且认定 l为二分查找的结果。定义 m⌊2lr⌋。如果 m≤x,将 l 赋值为 m,否则将 r 赋值为 m。 不断重复…...
P11468 有向树
有向树 题目描述 给定一棵 n n n 个结点的树,将树上所有的无向边变成给定方向的有向边,求所有简单路径的长度之和。 有向图中 a 1 a_1 a1 到 a x a_x ax 的简单路径是形如 a 1 → a 2 → a 3 → ⋯ → a x a_1 \rightarrow a_2 \rightarrow a…...
Scrapy如何设置iP,并实现IP重用, IP代理池重用
前置知识 1/3乐观锁 2/3 Scrapy流程(非全部) 3/3 关于付费代理 我用的"快代理", 1000个ip, 每个ip1min的有效期, 你用的时候, 把你的链接, 用户名填上去就行 设置代理IP 🔒 & 帮助文档: ①meta ②meta#proxy$ 语法: ①proxy的设置: Request对象中…...
Vue.js组件开发-使用Vue3如何实现上传word作为打印模版
使用Vue 3实现Word模板上传、解析和打印功能的完整解决方案: 一、实现步骤 安装依赖创建文件上传组件实现.docx文件解析创建打印预览组件实现打印功能样式优化 二、完整代码实现 1. 安装依赖 npm install mammoth axios2. 创建文件上传组件(FileUploa…...
HTML<kbd>标签
例子 在文档中将一些文本定义为键盘输入: <p>Press <kbd>Ctrl</kbd> <kbd>C</kbd> to copy text (Windows).</p> <p>Press <kbd>Cmd</kbd> <kbd>C</kbd> to copy text (Mac OS).</p>…...
如何运用python爬虫爬取知网相关内容信息?
爬取知网内容的详细过程 爬取知网内容需要考虑多个因素,包括网站的结构、反爬虫机制等。以下是一个详细的步骤和代码实现,帮助你使用Python爬取知网上的论文信息。 1. 数据准备 首先,需要准备一些基础数据,如知网的URL、请求头…...
Codeforces Round 130 (Div. 2) E. Blood Cousins(LCA+DFS序+二分)【2100】
题目链接 https://codeforces.com/contest/208/problem/E 思路 此题有两个要点:第一,快速找到节点 u u u的 p p p级祖先。第二,在以节点 u u u为根的子树中找到与节点 u u u深度相同的节点的个数。 对于第一点,我们可以使用LC…...
RocketMQ原理—5.高可用+高并发+高性能架构
大纲 1.RocketMQ的整体架构与运行流程 2.基于NameServer管理Broker集群的架构 3.Broker集群的主从复制架构 4.基于Topic和Queue实现的数据分片架构 5.Broker基于Pull模式的主从复制原理 6.Broker层面到底如何做到数据0丢失 7.数据0丢失与写入高并发的取舍 8.RocketMQ读…...
LeetCode:343. 整数拆分
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 &#…...
【微服务与分布式实践】探索 Eureka
服务注册中心 心跳检测机制:剔除失效服务自我保护机制 统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况,Eureka Server会将当前的实例注册信息保护起来,让这些实例不会过期。当节点在短时间内丢失过多的心跳时&am…...
Golang Gin系列-9:Gin 集成Swagger生成文档
文档一直是一项乏味的工作(以我个人的拙见),但也是编码过程中最重要的任务之一。在本文中,我们将学习如何将Swagger规范与Gin框架集成。我们将实现JWT认证,请求体作为表单数据和JSON。这里唯一的先决条件是Gin服务器。…...
技术发展视域下中西方技术研发思维方式的比较与启示
一、引言 1.1 研究背景与意义 在当今全球化的时代,科技发展日新月异,深刻地改变着人类的生活与社会的面貌。从人工智能的飞速发展,到生物科技的重大突破;从信息技术的广泛应用,到新能源技术的不断革新,技术…...
第4章 神经网络【1】——损失函数
4.1.从数据中学习 实际的神经网络中,参数的数量成千上万,因此,需要由数据自动决定权重参数的值。 4.1.1.数据驱动 数据是机器学习的核心。 我们的目标是要提取出特征量,特征量指的是从输入数据/图像中提取出的本质的数 …...
Go的内存逃逸
Go的内存逃逸 内存逃逸是 Go 语言中一个重要的概念,指的是本应分配在栈上的变量被分配到了堆上。栈上的变量在函数结束后会自动回收,而堆上的变量需要通过垃圾回收(GC)来管理,因此内存逃逸会增加 GC 的压力࿰…...
StarRocks BE源码编译、CLion高亮跳转方法
阅读SR BE源码时,很多类的引用位置爆红找不到,或无法跳转过去,而自己的Linux机器往往缺乏各种C依赖库,配置安装比较麻烦,因此总体的思路是通过CLion远程连接SR社区已经安装完各种依赖库的Docker容器,进行编…...
