新手c语言讲解及题目分享(十九)--数据类型专项练习

news2024/9/21 17:57:27

本文主要讲解c语言的基础部分,常见的c语言基础数据类型,这个也非常重要。

参考书目和推荐学习书目:通过网盘分享的文件:C语言程序设计电子教材 (1).pdf
链接: https://pan.baidu.com/s/1JFqSaCKZ0A2Lr944e72NUA?pwd=p648
提取码: p648

目录

前言

一.常量与变量

1.常量

2.变量

二.标识符

三.数据类型

1.连续定义多个变量

2.数据的长度

3.关键字

四.整数

1.整型的长度

2.sizeof 操作符

五.浮点数

六.字符型数据

1.字符的表示

2.字符数据和整型数据的关系(可忽略)

3.转义字符

七.经验总结


前言

在 C 语言中,数据类型是构建程序的基础,它们决定了变量可以存储的信息种类以及这些信息在内存中的存储方式。讲解数据类型的前言可以这样描述:
在编程的世界中,数据类型是构建逻辑和表达现实世界的基石。C 语言作为一门功能强大且效率极高的编程语言,提供了丰富的数据类型,以满足不同场景下的编程需求。了解并熟练掌握 C 语言的数据类型,对于编写结构清晰、性能优良的程序至关重要。每种数据类型都有其特定的用途和存储限制,这不仅关系到程序的正确性和健壮性,还直接影响到程序的运行效率。在本教程中,我们将深入探讨 C 语言的基本数据类型,如整型、浮点型、字符型等,以及它们在内存中的表示和操作方式。此外,我们还将介绍如何通过指针和数组等复合数据类型来管理更复杂的数据结构。通过学习这些内容,你将能够更好地理解 C 语言的工作原理,并有效地利用这些工具构建强大的应用程序。
这段前言为读者提供了数据类型在 C 语言中的重要性,并简要介绍了即将讨论的主题,为深入学习 C 语言的数据类型做好了铺垫。

由于本章较为简单,任何类型的题目都有涉及,所以此节没有习题分享。

新手c语言入门题目分享(二)-CSDN博客

新手c语言入门题目分享(三)-CSDN博客

新手c语言入门题目分享(四)-CSDN博客

新手c语言入门题目分享(五)-CSDN博客

新手c语言入门题目分享(六)-CSDN博客

新手c语言入门题目分享(七)-CSDN博客

一.常量与变量

计算机要处理的数字、文字、符号、图形、音频、视频等数据是以二进制的形式存放在 内存中的。我们将 8 个比特(即二进制中的位)称为一个字节(Byte),并将字节作为最小的 可操作单元。

1.常量

常量(constant)是在程序设计过程中已知的、在程序中直接写出的数值。在程序运行过 程中,常量的值不能被改变。在 C 语言中常量可分为直接常量和符号常量两种表现形式。

直接用值表示的常量为直接常量,如 15、15.2、‘a’、“abc”等。用标识符(后面会详细 介绍)表示的常量为符号常量,其一般形式为:

#define 标识符 常量值

#define PI 3.1416 

2.变量

在现实生活中,为了避免物品显得凌乱,并且方便以后拿取,我们会找一个储物柜来存 放物品,计算机也是这个道理,我们需要先在内存中分配一块区域,规定用它来存放整数, 并起一个好记的名字(标识符),方便以后查找。这块区域就是整数“储物柜”。

C 语言在内存中分配区域的方法为:

int a; 

int 是 integer(整数)的简写,a 是为内存中找到的“储物柜”起的名字,也可以叫其他 名字,如 age、number 等。例:

int a=6;
a=78;
a=789;

通过不断的给a赋值,最终a=789;

因此这种值可以改变的量被称为变量。

二.标识符

在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如变量名、函数名 等,这些符号被称为标识符。标识符可以由任意顺序的大小写字母、数字、下划线组成,加 username、username123、user_name、_username。标识符不能以数字开头,也不能是 C 语言 中的关键字,如 123username、98.3、Hello World、-username 是非法的标识符。

在使用标识符时还必须注意以下几点:

(1)C 语言严格区分大小写,如 num 和 NUM 是两个不同的标识符。

(2)C 语言虽然不限制标识符的长度,但是受到编译器和操作系统的限制。例如在某个 编译器中规定标识符前 128 位有效,当两个标识符的前 128 位相同时,则被认为是同一个标 识符。

(3)常量名所有字母都大写,单词之间用下划线连接,如 DAY_OF_MONTH。

三.数据类型

我们有很多种方式来解释内存中存储的数据,使用之前必须要确定。上面的 int a;说明 这个数据是一个整数,不能理解为像素、声音等。int 用来表示数据类型,我们称它为数据类 型(Data Type)。

说明

字符型

短整

长整

单精浮点

双精浮点

类型

类型

char

short

int

long

float

double

void

1.连续定义多个变量

在 C 语言中,我们可以通过对多个变量的连续定义来使程序更加简洁,如:

int a,b,c; 
float m=10.9,n=20.56; 
char p,q='a'; 

2.数据的长度

数据长度可以理解为数据占用的内存大小,单位是字节。占用内存越大能够存储的数据 就越多,数字型变量的值就越大,反之就越小。

多个数据在内存中的存储方式是连续的,变量与变量之间没有明显的界限,如果计算机 不知道数据的长度,就不知道怎么存取变量。当我们保存一个任意整数时,它占用了 4 个字 节,而在读取的时候却认为它是 5 个字节,显然是不对的。

我们在定义变量的同时要明确它所占的内存大小,也就是数据的长度。数据类型的作用 就是告诉计算机数据的解释方式及其长度。C 语言的数据类型所占用的字节数是固定的,一 旦确定数据类型,数据的长度也随之确定了。

32位计算机

说 明

字符型

短整

长整

单精浮点

双精浮点

数据类型

char

short

int

long

float

double

长度

1

2

4

4

4

8

拓展:C 语言提供的多种数据类型让程序更加灵活和高效,但增加了学习成本。PHP、 JavaScript 等编程语言,在定义变量时不需要指明数据类型,编译器会根据赋值情况自动 推演出数据类型,更加智能。

C、Java、C++、C#等在定义变量时必须指明数据类型,这样的编程语言称为强类型 语言。PHP、JavaScript 等在定义变量时不必指明数据类型,编译系统会自动推演,这样 的编程语言称为弱类型语言。

强类型语言一旦确定了数据类型,就不能再赋给其他类型的数据,除非对数据类型进 行转换。弱类型语言没有这种限制,一个变量可以先赋给一个整数,再赋给一个字符串。

3.关键字

关键字是由 C 语言规定的具有特定意义的字符串,也称为保留字,如 int、char、long、 float、unsigned 等。 关键字是具有特殊含义的标识符,它们已经被系统使用,我们不能再使用了。标识符不 能与关键字相同,否则会出现错误。 标准 C 语言中规定了 32 个关键字。

四.整数

整数是编程中常用的数据,C 语言通常使用 int 来定义整数。 在现代操作系统中,int 一般占用 4 个字节的内存,共计 32 位。如果不考虑正负数,当 所有的位都为“1”时值最大,为 2 32-1=4 294 967 295≈43 亿,这是一个很大的数,我们在实 际开发中很少用到这么大的数,而 1、16、1 024 等较小的数使用频率较高。

short int a=10; 
short int b,c=99; 
long int m=205546; 
long int n,p=665587; 

int 是基本的整数类型,short 和 long 是在 int 的基础上进行的扩展,short 可以节省内 存,long 可以容纳更大的值。 short、int、long 是 C 语言中常见的整数类型,其中 int 称为整型,short 称为短整型, long 称为长整型。 

1.整型的长度

C 语言没有严格规定 short、int、long 的长度,只做了如下限制:

(1)short 至少占用 2 个字节;

(2)int 建议为一个机器字长。32 位环境下机器字长为 4 个字节,64 位环境下机器字长为 8 个字节。

(3)short 的长度不能大于 int,long 的长度不能小于 int。 总结起来,它们的长度(所占字节数)关系为: 2≤short≤int≤long Short 和 long 可能与 int 占用相同的字节数。 在 16 位环境下,short 和 int 为 2 个字节,long 为 4 个字节。16 位环境多用于单片机和 低级嵌入式系统。

操作系统

short

int

long

Win 6464 Windows

2

4

4

Unix 64 位(UnixLinuxMac OSBSDSolaris 等)

2

4

8

2.sizeof 操作符

如果想要知道某个数据类型的长度,可以使用 sizeof 操作符。

获取基本数据类型的大小

#include <stdio.h>

int main() {
    printf("Size of int: %zu bytes\n", sizeof(int));
    printf("Size of char: %zu bytes\n", sizeof(char));
    printf("Size of float: %zu bytes\n", sizeof(float));
    printf("Size of double: %zu bytes\n", sizeof(double));
    return 0;
}

注:sizeof 是 C 语言中的操作符,不是函数,所以可以不带( )。

五.浮点数

C 语言中常用的浮点数有 2 种类型,分别是 float 或 double。float 为单精度浮点型, double 为双精度浮点型。 浮点数的长度是固定的。

类型

类型标识符

取值范围

单精度浮点型

float

32 4 字节)

3.4×10^38 3.4×10^38

双精度浮点型

double

64 8 字节)

1.7×10^308 1.7×10^308

六.字符型数据

1.字符的表示

初学者经常用到的字符类型是 char,它的长度是 1,只能容纳 ASCII 表中的字符,也就 是英文字符,处理汉语、日语、韩语等英文之外的字符需要使用其他字符类型。

char a='1'; 
char b='$'; 
char c='X'; 
char d=' '; /* 空格是一个字符*/ 

2.字符数据和整型数据的关系(可忽略)

在为字符型变量赋值时,内存中存放的不是字符本身,而是该字符对应的 ASCII 值,是 类似整型的数,因此,在 C 语言中字符型数据和整型数据是可以通用的。

3.转义字符

在 C 语言中,;转义字符是以“\”开头的字符序列,它把字符的原始含义转换成其他 含义,如“\n”的含义为换行,通过“\”把 n 的原始含义转换成换行

的转义

转义

功能

转义

功能

\n

换行

\'

单引号字符

\b

退格

\''

双引号字符

\t

制表符

\\

反斜杠字符

\r

回车

\ddd

ddd 13 八进制数所代表的字符

\a

响铃

\xhh

hh 1~2 十六进制数所代表的的字符

\v

纵向跳格

\0

ASCII 0 的空字符

\f

换页

七.经验总结

在学习 C 语言的数据类型时,以下经验总结可能会对你有所帮助:
1. 理解基础类型:首先,要深入理解 C 语言中的基本数据类型(如 `int`, `char`, `float`, `double`)及其存储大小和范围。这有助于你正确选择数据类型以存储特定范围内的值。
2. 掌握类型转换:熟悉不同数据类型之间的隐式和显式转换规则。了解何时需要进行类型转换,以及如何避免因类型转换不当导致的精度损失或溢出。
3. 熟悉修饰符:了解 `signed`, `unsigned`, `short`, `long` 等类型修饰符的作用,它们可以改变基本数据类型的存储大小和表示范围。
4. 类型大小与对齐:了解不同平台上数据类型的大小和对齐要求可能不同。使用 `sizeof` 操作符来获取数据类型的大小,这对于编写可移植代码非常重要。
遵循这些经验总结,你将能够更有效地学习 C 语言的数据类型,并在编程实践中更加得心应手。
 

————由于博主还是大三的在读生,时间有限,每天会不定时更新一些学习经验和一些32的项目,如果喜欢就点点关注吧,大佬们!!!!————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang协程泄漏定位和排查

1 场景&#xff1a;无缓冲channel写阻塞 package mainimport ("log""net/http"_ "net/http/pprof""time""github.com/gin-gonic/gin" )func main() {go func() {log.Println(http.ListenAndServe("localhost:6060&quo…

uni-app实现web-view和App之间的相互通信

双向实时 如果app端部署成网站&#xff0c;则web-view就是iframe&#xff0c;使用也可以双向通讯 https://uniapp.dcloud.net.cn/component/web-view.html APP端代码 index.vue: <template><web-viewid"m-webview":fullscreen"true":src"…

数据结构-二叉树-基础知识

数据结构-二叉树-基础知识 1.树1.1什么是树1.2基本概念子节点、父节点叶节点节点的度树的高度/深度节点的子孙、祖先 1.3树与非树1.4如何实现1.5实例 2.二叉树2.1什么是二叉树2.2特殊的二叉树满二叉树完全二叉树 2.3性质层数度节点 2.4存储结构 1.树 1.1什么是树 树型结构是一…

C#笔记10 Thread类怎么终止(Abort)和阻止(Join)线程

Thread类 C#笔记8 线程是什么&#xff1f;多线程怎么实现和操作&#xff1f;-CSDN博客 C#笔记9 对线程Thread的万字解读 小小多线程直接拿下&#xff01;-CSDN博客 上次说过怎么简单的使用多线程&#xff0c;怎么创建多线程&#xff0c;但是没有具体分析它的终止和释放。 线…

【C++题解】1330. 求最大梯形的面积

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1330. 求最大梯形的面积 类型&#xff1a;二维数组 题目描述&#xff1a; 从键盘读入 n ( 3≤n≤100 )个梯形的上底、下底和高&#xff0c;请问这 n 个梯形中&#xff0c;最大面积…

3.ChatGPT在教育领域的应用:教学辅助与案例分享(3/10)

ChatGPT在教育领域的应用&#xff1a;教学辅助与案例分享 引言 在21世纪的教育领域&#xff0c;技术革新正以前所未有的速度改变着传统的教学和学习方式。随着人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;教育技术&#xff08;EdTech&#xff09;领域迎来了新的…

“后期分块”:用长上下文嵌入模型拯救文本检索

论文&#xff1a;Late Chunking: Contextual Chunk Embeddings Using Long-Context Embedding Models地址&#xff1a;https://arxiv.org/abs/2409.04701 研究背景 研究问题&#xff1a;这篇文章要解决的问题是文本块嵌入在处理长文本时丢失上下文信息的问题。具体来说&#xf…

信刻光盘安全隔离与信息交换系统

随着各种数据传输、储存技术、信息技术的快速发展&#xff0c;保护信息安全是重中之重。军工、政府、部队及企事业单位等利用A网与B网开展相关工作已成为不可逆转的趋势。针对于业务需要与保密规范相关要求&#xff0c;涉及重要秘密信息&#xff0c;需做到安全的物理隔离&#…

队列的详细操作

1.循环队列--队列的顺序表示和实现 #include<stdio.h> #define MAXQSIZE 100 typedef struct {int* base;int front;int rear; }SqQueue;int InitQueue(SqQueue& Q) {Q.base new int[MAXQSIZE];//为队列分配一个最大容量为MAXSIZE的数组空间if (!Q.base)return -1;…

QXml 使用方法

VS2019 QT 编译工具链问题解决 使用winqtdeploy.exe 打包环境就可以正常运行&#xff0c;缺少某一个运行库引起的 简易使用python脚本编译运行 Python3 中的 slots 和 QT 中的 slots 宏定义重复, 放在不同的文件中进行调用可以避免 还是比较习惯从源码包引入&#xff08;方便定…

OpenAI新“草莓”模型即将发布,推理模式引发关注

OpenAI发布“草莓”模型的消息引发广泛关注。这个新模型将在未来两周内亮相&#xff0c;将为ChatGPT等产品带来全新的技术支持。草莓模型的推理模式具有独特性&#xff0c;能够仿效人类思维&#xff0c;在生成响应之前进行拟人化思考。其推理过程通常需要10到20秒&#xff0c;这…

2_foc闭环调试_ADC电流采样与滤波及pid数据结构

1、ADC电流采样 上次添加了编码器获取电角度的程序&#xff0c;将之前开环控制的角度进行了替换&#xff0c;这次再将电流采样添加进来&#xff0c;之后就可以利用这样一个有反馈的系统进行电流环PI控制器参数调试。 之前写过ADC&#xff0b;DMA电流采样的stm32库函数程序&…

《 C++ 修炼全景指南:八 》智能指针大揭秘:从 auto_ptr 到 unique_ptr shared_ptr 的进化之路

1、引言 在 C 编程中&#xff0c;内存管理历来是复杂且容易出错的部分。手动管理动态分配的内存不仅会导致内存泄漏&#xff0c;还会引发悬空指针和双重释放等问题。如何有效地管理动态内存&#xff0c;避免内存泄漏和未定义行为&#xff0c;往往是困扰初学者和资深开发者的难…

常见 HTTP 状态码详解与Nginx 文件上传大小限制

在我们日常使用 Nginx 搭建网站或应用服务时&#xff0c;可能会遇到很多与文件上传和请求响应相关的问题。今天我们就来聊聊 如何限制文件上传的大小&#xff0c;并介绍一些常见的 HTTP 状态码 及其在 Nginx 中的处理方式。 一、文件上传大小限制 有时&#xff0c;我们需要限…

Web3的崛起与智能合约的角色

随着Web3的发展&#xff0c;去中心化网络逐渐取代了以往的集中控制互联网模式。这一转变不仅强调了用户的自治权和隐私保护&#xff0c;还引入了智能合约这一核心技术。智能合约基于区块链技术&#xff0c;能够自动执行合约条款&#xff0c;无需中介干预&#xff0c;从而确保了…

git下载安装windows

https://git-scm.com/download/win 接下来傻瓜式安装就可以了

Django创建模型

1、根据创建好应用模块 python manage.py startapp tests 2、在models文件里创建模型 from django.db import modelsfrom book.models import User# Create your models here. class Tests(models.Model):STATUS_CHOICES ((0, 启用),(1, 停用),# 更多状态...)add_time mode…

RAR压缩包原密码过于简单如何修改密码?

RAR压缩包作为一种常见的文件压缩格式&#xff0c;广泛应用于文件传输和存储中。为了保障文件的安全性&#xff0c;用户经常会给RAR压缩包设置密码。但有时我们觉得原密码过于简单&#xff0c;想要修改成一个比较复杂的密码&#xff0c;这时我们要如何修改让人压缩包密码呢&…

<<编码>> 第 5 章 绕过拐弯的通信(Seeing Around Corners) 示例电路

灯泡通讯电路 info::操作说明 鼠标单击开关切换开合状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlchs-ch05-01-communication-circuit.txt 双边灯泡通讯电路 info::操作说明 鼠…

Windows一键安装Mysql数据库|非官方复杂安装,解压即可,操作简单

我们都知道在官方安装mysql数据库极其复杂&#xff0c;还极大概率遇到各种问题&#xff0c;今天教大家只要解压就可安装完数据库&#xff0c;操作及其简单绿色。 版本包括了mysql8或mysql5&#xff0c;各位各取所需即可。 不管你之前是否安装过数据库&#xff0c;只要端口330…