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

深入理解 C 语言基本数据类型:从常量变量到输入输出

深入理解 C 语言基本数据类型:从常量变量到输入输出

在 C 语言的世界里,数据是程序运行的核心,而对数据类型的掌握则是编写高效、准确程序的基础。今天,就让我们一起深入探讨 C 语言中的基本数据类型。

 

一、数据的表现形式

在 C 语言中,数据有常量和变量两种表现形式。

  1. 常量:在程序运行过程中,值不能被改变的量就是常量。
    • 整型常量:像 1、2、-100 这些不带小数点的数,还有像 (56) O(八进制)、(8A) H(十六进制)等都是整型常量。
    • 实型常量:有十进制小数形式,如 123.456;还有指数形式,比如 12.34e3(表示) ,不过要注意 e 或 E 前后的规则哦,e 和 E 之前必须有数字,且后面必须为整数。
    • 字符常量:分为普通字符常量,用单引号括起来的一个字符,如’a’;还有转义字符,以 \ 开头,像’\n’表示换行,’\t’表示水平制表符。
    • 字符串常量:用双引号括起来的若干字符,比如”ABC”,可别和单引号括起来的字符常量搞混啦。
    • 符号常量:通过 #define 指令定义,例如 #define PI 3.1415926,用一个符号代表一个常量,方便又实用。
    • 地址常量:每个常量、变量、数组的地址在程序运行期间都不会改变,这就是地址常量。
  2. 变量:变量的值在程序运行中是可以改变的。它代表一个有名字、具有特定属性的存储单元。使用变量前必须先定义,而且变量名要符合标识符命名规则,只能由字母、数字、下划线组成,并且以字母或下划线开头,同一作用域内不能重名,也不能是关键字。

 

二、数据类型

在计算机运算中,指定数据类型很重要。因为计算机的存储单元是有限的,和数学运算有所不同。数学运算精准且数值不分类型,而计算机中数据存放在存储单元,存储单元由有限字节构成,存放数据范围有限。比如 1/3 在数学中是无限循环小数,但在计算机中以 % f 格式输出只有 6 位小数。

  1. 整型数据类型:包括有符号和无符号的,像 int(普通整型,2 或 4 字节 ,范围 -32768 ~ 32767)、unsigned int(无符号整型)、short(短整型,2 字节)、long(长整型,4 字节)等。可以用 sizeof (数据类型) 来获取数据类型占用的字节数。
  2. 字符型:char 类型占 1 字节,其取值范围遵循 ASCII 码表。普通字符按 ASCII 码存储,不过存储其他文字字符时,像中文,可能占 2 个或多个字节,有时会按 4 个字节处理 。
  3. 浮点型:用于表示带小数点的实数。在 C 语言中,实数以指数形式存储,小数点位置可浮动,所以叫浮点数。有 float(单精度,4 字节)、double(双精度,8 字节)、long double(长双精度,8 或 16 字节 )。
  4. 确定常量的类型:从常量表示形式判断。单引号括起来的单个字符或转义字符是字符常量;不带小数点的数值是整型常量,但要注意范围,末尾加 L 或 l 是长整型,加 LL 或 ll 是长长整型;小数形式或指数形式的实数是浮点型常量,末尾加 F 或 f 是单精度,加 L 或 l 是 long double 类型。

 

三、格式化输入输出函数

输入输出是程序的基本操作,C 语言提供了标准输入输出函数,使用时要在程序开头用 #include 加载相关头文件,如 stdio.h。

  1. printf 函数(格式化输出函数):一般格式为 printf (格式控制,输出列表)。
    • 格式控制:包含格式声明(如 % d、% c 等)和普通字符(如 \n、, 等)。格式声明用于将输出数据转换为指定格式,普通字符原样输出。
    • 输出列表:是要输出的数据,可以是常量、变量或表达式。还能自定义输出分隔符和格式,通过指定域宽(如 %4d、%8.3f)来控制输出数据的显示宽度。
  2. scanf 函数(格式化输入函数):一般格式为 scanf (格式控制,地址列表) 。
    • 变量作参数时,前面要加取地址符号 &。
    • 如果格式控制字符串中有其他字符,输入时要对应输入相同字符。
    • 输入数值型数据时,遇到空格、回车等非数值字符,数据输入结束。double 型数据输入用 % lf,输出可用 % f。输入时也能进行域宽控制。
  3. 字符型数据的输入和输出:putchar 用于输出字符型变量的值;getchar 用于从键盘输入一个字符存入变量,它还能起到类似 system ("pause"); 的暂停效果。

掌握好 C 语言的基本数据类型和输入输出函数,能让我们更好地编写程序,处理各种数据。希望这篇博客能帮助大家加深对这些知识的理解,在编程路上更进一步!


http://www.kler.cn/a/524566.html

相关文章:

  • 【C语言】static关键字的三种用法
  • 四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)
  • 求解旅行商问题的三种精确性建模方法,性能差距巨大
  • mybatis(112/134)
  • Node.js与MySQL模块结合:打造安全高效的用户信息管理系统
  • 2025.1.26机器学习笔记:C-RNN-GAN文献阅读
  • STM32 PWM驱动舵机
  • 【信息系统项目管理师-选择真题】2007下半年综合知识答案和详解
  • Leetcode45:跳跃游戏 II
  • SpringBoot 中的测试jar包knife4j(实现效果非常简单)
  • 关于opencv环境搭建问题:由于找不到opencv_worldXXX.dll,无法执行代码,重新安装程序可能会解决此问题
  • 基于django的智能停车场车辆管理深度学习车牌识别系统
  • 如何把obsidian的md文档导出成图片,并加上文档属性
  • 从源码中学习包的命名
  • 剑指 Offer II 001. 整数除法
  • 步进电机加减速公式推导
  • three.js用粒子使用canvas生成的中文字符位图材质
  • 【Proteus仿真】【51单片机】简易计算器系统设计
  • python-leetcode-从中序与后序遍历序列构造二叉树
  • 【Spark速通】
  • MV结构下设置Qt表格的代理
  • EXCEL教程:如何打开Excel隐藏部分?
  • JavaScript - Web APIs(上)
  • 基于Arcsoft的人脸识别
  • doris:异常数据处理
  • DeepSeek部署教程(基于Ollama)