C语言入门教程100讲(2)变量与常量

文章目录

      • 1. 什么是变量和常量?
      • 2. 变量的声明与初始化
        • 2.1 变量的声明
        • 2.2 变量的初始化
      • 3. 常量的定义
        • 3.1 使用 `#define` 定义常量
        • 3.2 使用 `const` 关键字定义常量
      • 4. 变量和常量的命名规则
      • 5. 示例代码
        • 代码解析:
        • 输出结果:
      • 6. 常见问题
        • 问题 1:变量未初始化会怎样?
        • 问题 2:`#define` 和 `const` 的区别是什么?
        • 问题 3:变量名可以随意命名吗?
      • 7. 扩展练习

1. 什么是变量和常量?

在 C 语言中,变量是用于存储数据的容器,其值可以在程序运行过程中改变。常量则是固定不变的值,一旦定义后不能被修改。

2. 变量的声明与初始化

2.1 变量的声明

在 C 语言中,变量需要先声明后使用。声明变量的语法如下:

数据类型 变量名;

例如:

int age;        // 声明一个整型变量 age
float price;   // 声明一个浮点型变量 price
char letter;   // 声明一个字符型变量 letter
2.2 变量的初始化

变量可以在声明时直接赋值,称为初始化。语法如下:

数据类型 变量名 =;

例如:

int age = 25;          // 声明并初始化整型变量 age
float price = 99.99;   // 声明并初始化浮点型变量 price
char letter = 'A';     // 声明并初始化字符型变量 letter

3. 常量的定义

C 语言中的常量可以通过以下两种方式定义:

3.1 使用 #define 定义常量

#define 是预处理指令,用于定义常量。语法如下:

#define 常量名 值

例如:

#define PI 3.14159
  • 常量名通常用大写字母表示。
  • 常量在程序中是只读的,不能被修改。
3.2 使用 const 关键字定义常量

const 是 C 语言中的关键字,用于定义只读变量(即常量)。语法如下:

const 数据类型 常量名 =;

例如:

const int MAX_VALUE = 100;
  • const 定义的常量在程序运行期间不能被修改。

4. 变量和常量的命名规则

  • 变量名和常量名只能包含字母、数字和下划线(_)。
  • 变量名和常量名不能以数字开头。
  • 变量名和常量名区分大小写。
  • 不能使用 C 语言的关键字(如 intfloatreturn 等)作为变量名或常量名。

5. 示例代码

以下是一个使用变量和常量的示例程序:

#include <stdio.h>#define PI 3.14159  // 定义常量 PIint main() {int radius = 5;          // 声明并初始化变量 radiusconst double area = PI * radius * radius;  // 计算面积并赋值给常量 areaprintf("半径: %d\n", radius);printf("面积: %.2f\n", area);return 0;
}
代码解析:
  1. #define PI 3.14159

    • 定义了一个常量 PI,值为 3.14159
  2. int radius = 5;

    • 声明并初始化了一个整型变量 radius,值为 5
  3. const double area = PI * radius * radius;

    • 计算圆的面积,并将结果赋值给常量 area
  4. printf

    • 输出半径和面积的值。
输出结果:
半径: 5
面积: 78.54

6. 常见问题

问题 1:变量未初始化会怎样?
  • 如果变量未初始化,其值是未定义的(可能是任意值)。使用未初始化的变量可能导致程序行为异常。
问题 2:#defineconst 的区别是什么?
  • #define 是预处理指令,在编译前进行文本替换,不占用内存。
  • const 是关键字,定义的常量占用内存,且具有类型信息。
问题 3:变量名可以随意命名吗?
  • 变量名需要遵循命名规则,且应具有描述性,以便提高代码的可读性。

7. 扩展练习

  1. 修改程序,计算圆的周长并输出。
  2. 尝试定义一个常量 GRAVITY,表示重力加速度(9.8),并计算物体自由落体的速度。
  3. 声明多个变量并初始化,输出它们的值。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++项目-KV存储-模仿redis实现kv键值对存储的基本功能。

KV存储引擎的技术解析&#xff1a;数组、哈希与红黑树实现及其在网络I/O中的应用。 内容概要&#xff1a;本文档深入介绍了基于数组、哈希表和红黑树的键值存储引擎的设计与实现。文档首先阐述了系统的总体架构与类图关系&#xff0c;之后分别对底层存储结构进行了详细解释&am…

vue3:十一、主页面布局(优化页面跳转方式)

:router"true" 一、参考文章 vue3:十一、主页面布局(实现基本左侧菜单右侧内容效果)-CSDN博客 参考上述文章可知&#xff0c;页面跳转是通过在js中定义的菜单中携带的path&#xff0c;然后通过菜单的点击事件完成的跳转&#xff0c;现在可以进行优化&#xff0c;直…

深入解析 Java Stream API:筛选子节点的优雅实现!!!

&#x1f680; 深入解析 Java Stream API&#xff1a;筛选子节点的优雅实现 &#x1f527; 大家好&#xff01;&#x1f44b; 今天我们来聊聊 Java 8 中一个非常常见的操作&#xff1a;使用 Stream API 从 Map 中筛选出特定条件的元素。&#x1f389; 具体来说&#xff0c;我们…

统计学重要概念:自由度

在统计学中&#xff0c;自由度&#xff08;degrees of freedom&#xff0c;简称df&#xff09;是一个重要的概念&#xff0c;它表示在计算某个统计量时可以自由变化的值的数量。对于一个样本量为n的样本&#xff0c;自由度通常为n-1&#xff0c;这是因为我们需要用样本数据来估…

数据结构-排序

文章目录 1. 排序的概念2. 常见排序算法的实现2.1 插入排序1&#xff09;插入排序一&#xff09;基本思想二&#xff09;特性及时间复杂度三&#xff09;代码实现 2&#xff09;希尔排序&#xff08;缩小增量排序&#xff09;一&#xff09;基本思想二&#xff09;特性及时间复…

压缩壳学习

壳是什么 壳就是软件的一个保护套&#xff0c;防止软件被进行反编译或被轻易地修改。 其作用就是为了保护软件。 常见的大类壳有压缩壳、加密壳、VM 壳的分类。 压缩壳顾名思义就是用来减小软件的文件大小的&#xff1b;加密壳&#xff0c;通过加密软件来保护软件&#xff…

《AI大模型趣味实战》第6集:基于大模型和RSS聚合打造个人新闻电台

《AI大模型趣味实战》第6集&#xff1a;基于大模型和RSS聚合打造个人新闻电台 摘要 本文将带您探索如何结合AI大模型和RSS聚合技术&#xff0c;打造一个功能丰富的个人新闻电台系统。我们将使用Python和PyQt5构建一个桌面应用程序&#xff0c;该应用可以从多个RSS源抓取新闻&…

(学习总结29)Linux 进程概念和进程状态

Linux 进程概念 冯诺依曼体系结构软件运行与存储分级数据流动的理论过程 操作系统操作系统(Operator System) 概念操作系统的功能与作用系统调用和库函数概念 进程概念描述进程 - PCBtask_struct查看进程通过系统调用获取进程标示符 PID通过系统调用 fork 函数创建进程简单使用…

LLM - CentOS上离线部署Ollama+Qwen2.5-coder模型完全指南

文章目录 离线安装OllamaOllama下载Ollama硬件需求Ollama 常用命令参考Ollama安装Ollama 服务管理&开机启动开启局域网访问 Ollama 服务 离线安装模型gguf 文件格式下载Qwen2.5-Coder-7B-Instruct-GGUF格式选择 ( gguf 版本 )构建Modelfile文件加载并运行离线模型测试 集成…

Linux——信号

目录 Linux——信号1.信号的基础了解2.技术应用角度的信号3.产生信号3.1按键组合3.2系统调用产生信号3.2.1 kill()3.2.2 raise()3.2.3 abort() 3.3**.** 软件条件产生信号3.4硬件异常产生信号3.4.1 /0异常3.4.2 内存越界异常 4.理解信号的存在5.总结一下6.核心转储7.全部信号都…

向量叉积的应用——正反画画

1 解题思路 解题思路涉及的向量积相关知识 c实现 #include<iostream> #include<vector>using namespace std;struct TrianglePoint {int x;int y; };int momentForce(TrianglePoint A, TrianglePoint B, TrianglePoint C) {//AB向量&#xff1a;(B.x-A.x, B.y-A.…

构建自定义MCP天气服务器:集成Claude for Desktop与实时天气数据

构建自定义MCP天气服务器:集成Claude for Desktop与实时天气数据 概述 本文将指导开发者构建一个MCP(Model Control Protocol)天气服务器,通过暴露get-alerts和get-forecast工具,为Claude for Desktop等客户端提供实时天气数据支持。该方案解决了传统LLM无法直接获取天气…

Web安全策略CSP详解与实践

引言 &#xff1a;在黑客攻击频发的今天&#xff0c;你的网站是否像“裸奔”一样毫无防护&#xff1f;跨站脚本&#xff08;XSS&#xff09;、数据注入等攻击随时可能让用户数据泄露。今天我们将揭秘一个网站的隐形保镖——内容安全策略&#xff08;CSP&#xff09;&#xff0c…

HC-05与HC-06蓝牙配对零基础教程 以及openmv识别及远程传输项目的概述

这个是上一年的项目&#xff0c;之前弄得不怎么完整&#xff0c;只有一个openmv的&#xff0c;所以openmv自己去我主页找&#xff0c;这篇主要讲蓝牙 这个是我在使用openmv连接单片机1然后单片机1与单片机2通过蓝牙进行通信 最终实现的效果是&#xff1a;openmv识别到图形和数…

点云分割方法

点云分割 通过判断三维距离&#xff0c;实现对创建3团点云的分割 通过判断三维距离&#xff0c;实现对创建3团点云的分割 * 点云1 gen_object_model_3d_from_points (rand(100), rand(100),rand(100), Points1)* 点云2 gen_object_model_3d_from_points (rand(100), 2rand(100…

SpringBoot3使用CompletableFuture时java.util.ConcurrentModificationException异常解决方案

问题描述 在Spring Boot 3项目中&#xff0c;使用CompletableFuture进行异步编程时&#xff0c;偶发{"code":500,"msg":"java.util.ConcurrentModificationException"}异常&#xff0c;但代码中并未直接操作List或CopyOnWriteArrayList等集合类…

细说卫星导航:测距定位原理

测距定位原理 1. 伪距测量技术 核心原理&#xff1a;卫星发射信号&#xff0c;用户接收并记录传播时间&#xff0c;乘以光速得到距离&#xff08;伪距&#xff09;。 技术细节&#xff1a; 信号传播路径分析 信号结构&#xff1a; 卫星信号包含三部分&#xff1a; 载波&…

Linux系统管理与编程09:任务驱动综合应用

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 [环境] windows11、centos9.9.2207、zabbix6、MobaXterm、Internet环境 [要求] zabbix6.0安装环境&#xff1a;Lamp&#xff08;linux httpd mysql8.0 php&#xff09; [步骤] 5 …

RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”

嘿&#xff0c;亲爱的算法工程师们&#xff01;今天咱们聊一聊PDF解析的那些事儿&#xff0c;简直就像是在玩一场“信息捉迷藏”游戏&#xff01;PDF文档就像是个调皮的小精灵&#xff0c;表面上看起来规规矩矩&#xff0c;但当你想要从它那里提取信息时&#xff0c;它就开始跟…

RK3568 I2C底层驱动详解

前提须知&#xff1a;I2C协议不懂的话就去看之前的内容吧&#xff0c;这个文章需要读者一定的基础。 RK3568 I2C 简介 RK3568 支持 6 个独立 I2C: I2C0、I2C1、I2C2、I2C3、I2C4、I2C5。I2C 控制器支持以下特性: ① 兼容 i2c 总线 ② AMBA APB 从接口 ③ 支持 I2C 总线主模式…