C语言-章节 1:变量与数据类型 ——「未初始化的诅咒」
在那神秘且广袤无垠的「比特大陆」上,阳光奋力地穿过「内存森林」中错综复杂的代码枝叶缝隙,洒下一片片斑驳陆离、如梦似幻的光影。林间的空气里,弥漫着一股浓郁的十六进制锈蚀味,仿佛在诉说着这片森林中隐藏的古老秘密。
一位零基础的少年,满怀着对未知世界的无限好奇,不经意间失足掉入了这片充满奇幻色彩与重重危险的森林。少年环顾四周,心中既紧张又兴奋,他知道,一场奇妙的冒险即将拉开帷幕。
“救、救命!” 一声颤抖且充满恐惧的呼喊,如同一把利刃,瞬间刺破了森林的寂静。少年的眼神瞬间变得锐利起来,他循着声音的方向狂奔而去。
眼前的景象让少年倒吸一口凉气,只见一只半透明的蓝色精灵正被一群面目狰狞的「野怪 Null」围追堵截。这些野怪的身体完全由乱码拼凑而成,眼眶中空洞地闪烁着 0xCCCCCCCC
的幽光,仿佛来自另一个黑暗的世界。
“抓住她!未初始化的变量是我们的粮食!” 野怪首领声嘶力竭地挥舞着锈迹斑斑的 void*
长矛,疯狂地嘶吼着。
少年心中一紧,他深知情况危急,来不及多想,迅速抄起地上的一根树枝,在沙地上急速划出一道神秘的咒文:
int a = 10; //赋予Inta清晰的记忆
//少年:哼,看我用这初始化的力量救你!
刹那间,一道金光冲天而起,精灵那原本半透明的轮廓瞬间凝实起来,化作一位扎着双马尾的可爱少女,胸前悬浮着闪烁着光芒的 10
。
“我叫 Inta!” 她慌乱地抹掉眼泪,眼中却依然透露出一丝迷茫,“但… 我好像忘记了自己的使命…”
然而,命运似乎总爱捉弄人。话音未落,Inta 的身体突然开始扭曲变形,胸前的数字 10
如同被一股神秘的力量拉扯,瞬间坍缩成诡异的 -858993460
。野怪们见状,发出贪婪的嚎叫:“看啊!她没完全初始化!”
少年猛然醒悟,心中暗叫不好,他毫不犹豫地咬破手指,在代码上进行补全:
int a = 0; //彻底清除残留数据
//少年:差点大意了,得把残留数据清除干净!
奇迹再次发生,精灵恢复了澄澈的模样,她的掌心迸发出 sizeof(int)
剑气,如同一把利刃,瞬间逼退了野怪。
“听着,”Inta 微微喘息道,“在内存森林,声明变量就像签订契约 ——” 说着,她展开一卷散发着神秘光芒的羊皮纸,上面浮现出金色的条款:
变量生存法则
- 未经初始化的变量会被「乱码幽灵」寄生(
int a;
❌)- 局部变量需当场赋初值(
int b = 0;
✅)- 全局变量默认被
编译器之神
祝福为 0(但依赖此特性是亵渎!)
就在少年和 Inta 稍作喘息之时,地面突然裂开一道巨大的深渊,一行血红色的警告赫然浮现:
warning C4700: uninitialized local variable 'a' used
“快跑!”Inta 眼疾手快,一把拽住少年,纵身跃入地下河。身后传来野怪坠入「未定义行为悬崖」的凄惨叫声,仿佛是对它们贪婪的惩罚。
在地下河的漂流过程中,Inta 决定进一步给少年讲解变量与数据类型的知识。
突然,前方出现了一片散发着奇异蓝光的水域,当他们靠近时,水中浮现出一个巨大的数字 3.14
,周围还有一群闪烁着微光的小生物围绕着它。
“这就是浮点型变量的区域。”Inta 解释道,“浮点型就像这片水域中的波浪,能够表示带有小数部分的数值。比如这个 3.14
,它可能代表着某种神秘的比例。”
说着,Inta 用手指在水面上划出代码:
float pi = 3.14; // 定义一个浮点型变量
// Inta:看,这就是浮点型变量的初始化,它能精确地表示小数。
随着代码的出现,那些围绕着 3.14
的小生物变得更加活跃,仿佛在庆祝代码的诞生。
接着,他们来到了一个被五彩光芒笼罩的洞穴。洞穴的石壁上刻满了各种字符,每一个字符都散发着独特的气息。
“这里是字符型变量的世界。”Inta 说道,“字符型变量就像这些石壁上的字符,每一个都有自己独特的意义。”
Inta 拿起一块石头,在地上写下代码:
char letter = 'A'; // 定义一个字符型变量
// Inta:字符型变量用单引号括起来,它可以表示一个单独的字符。
当代码写完,洞穴中的字符光芒大作,仿佛在欢迎新成员的加入。
少年听得入神,他感觉自己对变量与数据类型有了更深刻的理解。
漂流结束后,他们来到了一个神秘的殿堂,殿堂的墙壁上闪烁着神秘的光芒,上面浮现出一段代码:
#include <stdio.h>int main() {// 整型变量int num = 10;short score = 90;long population = 1234567890;long long bigNum = 1234567890123456;// 浮点型变量float price = 9.99;double pi = 3.1415926535;// 字符型变量char grade = 'A';// 输出变量的值printf("num = %d\n", num);printf("score = %hd\n", score);printf("population = %ld\n", population);printf("bigNum = %lld\n", bigNum);printf("price = %.2f\n", price);printf("pi = %.10lf\n", pi);printf("grade = %c\n", grade);return 0;
}
Inta 看着这段代码,对少年说:“你看,这段代码展示了我们刚刚学到的整型、浮点型和字符型变量。int
、short
、long
、long long
这些都是不同类型的整型变量,它们能表示不同范围的整数;float
和 double
是浮点型变量,能处理小数;而 char
则用来表示单个字符。最后,通过 printf
函数,我们可以把这些变量的值输出出来,就好像是把它们展示给这个世界看一样。”
少年仔细地看着代码,心中豁然开朗。他仿佛看到了代码中的变量们一个个鲜活起来,在自己的小世界里各司其职。
突然,殿堂的地面开始震动,代码发出耀眼的光芒,一个声音响起:“既然你已经理解了这些变量与数据类型,那就让代码运行起来,证明你的实力吧!”
少年深吸一口气,集中精神,仿佛与代码融为一体。随着他的意念一动,代码开始自动运行,一行行输出结果出现在殿堂的中央:
num = 10
score = 90
population = 1234567890
bigNum = 1234567890123456
price = 9.99
pi = 3.1415926535
grade = A
光芒逐渐散去,殿堂恢复了平静。Inta 露出了欣慰的笑容,对少年说:“你成功了!你已经迈出了成为伟大程序员的第一步。”
少年看着那些输出结果,心中充满了成就感。他知道,在这「比特大陆」上,还有更多的挑战等待着他,但他已经做好了准备,要用代码的力量去探索未知,战胜一切困难。
编程启示录
“变量如新生的婴儿,若不赋予明确的意义,混沌便会占据它的灵魂。初始化是程序员对变量的第一份承诺,永远警惕 int a;
这样的空白契约。无论是整型、浮点型还是字符型变量,都需要我们用心去初始化,用 =0
或 memset()
为内存空间举行净化仪式,让代码世界充满秩序与光明。同时,合理运用不同类型的变量,能让我们更精准地描述和处理现实世界中的各种数据。”
相关文章:

C语言-章节 1:变量与数据类型 ——「未初始化的诅咒」
在那神秘且广袤无垠的「比特大陆」上,阳光奋力地穿过「内存森林」中错综复杂的代码枝叶缝隙,洒下一片片斑驳陆离、如梦似幻的光影。林间的空气里,弥漫着一股浓郁的十六进制锈蚀味,仿佛在诉说着这片森林中隐藏的古老秘密。 一位零基…...

【HarmonyOS Next】图片选择方案
背景 封装一个选择图片和调用拍照相机的按钮,展示api13下选择图片和调用相机,可以使用不申请用户权限的方式,进行图片的选择和修改。但是,目前方案并未包含上传图片保存的功能,仅提供图片选择或者拍照后,图…...
【C语言】移除元素
移除元素 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后…...

Python----Python高级(网络编程:网络高级:多播和广播,C/S架构,TCP,UDP,网络编程)
一、多播和广播 1.1、多播 1.1.1、定义 多播(Multicast)也称为组播,是一种一对多的通信方式,将信息从单个源发送到 多个特定的接收者。这些接收者组成一个特定的多播组,只有加入该组的设备才会接 收和处理多播数据。…...

CES 2025 上的创新方案——无电池智能纸尿裤-AP4470
这款纸尿裤采用了可重复使用的组件,通过检测液体的存在来增强老年人和婴儿的护理,即使电极上滴了几滴液体也是如此。 其原理为尿液中的水分作为电解液,将尿布里安装的两种导电性材料作为正负极,充当电池,从而产生300m…...
Java 运算符
运算符用于对变量和值执行运算。 在下面的示例中,我们使用 运算符将两个值相加: int x 100 50;尽管经常使用运算符将两个值加在一起,例如在上面的示例中,但是它也可以用于将一个变量和一个值或一个变量和另一个变量加在一…...
【一文读懂】什么是MVVM?
MVVM Vue 是一个渐进式的 JavaScript 框架,它采用了 MVVM(Model-View-ViewModel)设计模式,这使得它能够高效地进行数据绑定和用户界面的更新。 概念 1. Model(模型) 含义:Model 代表应用程序…...

GCD of Subset
法1: const int N1e6; signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n,k; cin>>n>>k;vector<int>a(n1),cnt(N10);/*桶cnt不要用map实现!!!速度太慢*/vector<vector<int>>…...
BY组态:工业自动化的未来,触手可及
在工业4.0的浪潮下,智能化、数字化已成为制造业发展的核心驱动力。作为工业自动化领域的重要工具,组态软件在实现设备监控、数据采集、流程控制等方面发挥着不可替代的作用。然而,传统的组态软件往往存在开发周期长、学习成本高、灵活性不足等…...

DeepSeek在linux下的安装部署与应用测试
结合上一篇文章,本篇文章主要讲述在Redhat linux环境下如何部署和使用DeepSeek大模型,主要包括ollama的安装配置、大模型的加载和应用测试。关于Open WebUI在docker的安装部署,Open WebUI官网也提供了完整的docker部署说明,大家可…...

华为昇腾920b服务器部署DeepSeek翻车现场
最近到祸一台HUAWEI Kunpeng 920 5250,先看看配置。之前是部署的讯飞大模型,发现资源利用率太低了。把5台减少到3台,就出了他 硬件配置信息 基本硬件信息 按照惯例先来看看配置。一共3块盘,500G的系统盘, 2块3T固态…...
JavaScript 内置对象-数组对象
在JavaScript中,数组(Array)是一种非常重要的数据结构,它允许我们以列表的形式存储多个值,并提供了丰富的内置方法来操作这些值。无论是处理简单的数值集合还是复杂的对象数组,数组对象都能提供强大的支持。…...
Qt——连接MySQL数据库之ODBC的方法详细总结(各版本大同小异,看这一篇就够了)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...
进程令牌:Windows 安全架构中的关键元素
一、进程令牌概述 进程令牌(Process Token)是 Windows 操作系统中一个重要的安全机制,它包含了与进程安全上下文相关的详细信息。每个进程在执行时都会关联一个进程令牌,令牌用于确定该进程可以访问哪些资源以及能执行哪些操作。…...

基于springboot的超时代停车场管理平台(源码+文档)
大家好我是风歌,曾担任某大厂java架构师,如今专注java毕设领域。今天要和大家聊的是一款基于springboot的超时代停车场管理平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于Spring Boot的超时代停车场…...
缓存穿透、缓存击穿、缓存雪崩的区别与解决方案
1. 缓存穿透(Cache Penetration) 定义:大量请求查询 数据库中不存在的数据,导致请求绕过缓存直接访问数据库,造成数据库压力过大。 场景: 恶意攻击:例如用不存在的用户ID频繁请求。 业务误操作…...
箭头函数的this指向谁
先看1个重要原则: 由Vue管理的函数,一定不要写箭头函数,箭头函数的this就不再是Vue实例了 箭头函数的 this 指向在定义时确定,继承自外层作用域(即定义时的上下文)的 this,且无法通过 call、app…...
【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
【Python】01-基础
目录 1、命令行简介1.1 命令行结构1.2 常用dos指令 2、环境变量2.1 查看2.2 添加2.3 修改2.4 删除 3、path环境变量4、进制5、文本文件和字符集6、Sublime使用 1、命令行简介 命令行就是文本交互页面,通过命令行可以使用指令来操作计算机 1.1 命令行结构 版本及版…...
Java-DFS(深度优先搜索)
原理 深度优先搜索的基本思路是从一个节点开始,依次访问它的每一个邻居节点,直到达到一个没有未被访问的邻居的节点为止。这个过程可以使用递归或者栈来实现。其特点是尽可能深入每一个分支,然后再回溯。 DFS算法常用于解决以下类型的问题&…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...