C++系列三:变量、常量

news2024/12/27 16:21:48

常量、变量

    • 1. 变量
      • 1.1 定义变量
      • 1.2 初始化变量
      • 1.3 变量数据类型
      • 1.4 变量作用域
    • 2. 常量
      • 2.1 定义常量
      • 2.2 常量类型
      • 2.3 常量作用域
      • 2.4 常量用法
    • 3. 总结

1. 变量

变量是一个用于存储值的命名内存位置,可以存储多种不同类型的数据,例如整数、实数、字符或布尔值等。在C++中,必须先定义变量然后才能使用它。

1.1 定义变量

变量定义是指声明一个变量并为其分配存储空间。在C++中,变量的定义必须包含以下三个部分:

data_type variable_name = initial_value;

其中,data_type指定变量的数据类型,variable_name是变量的名称,initial_value是变量的初始值(可选)。

例如,定义一个整型变量 num 并赋初值为 10:

int num = 10;

1.2 初始化变量

变量可以初始化为一个初始值。如果没有给变量指定初始值,变量将被初始化为默认值。例如:

int num; // 没有初始化,num 的值为未定义
int a = 0; // 初始化为 0
double b = 1.5; // 初始化为 1.5
char c = 'a'; // 初始化为字符 'a'

1.3 变量数据类型

(1)整型

整型变量用于存储整数值。整型变量有以下几个子类型:

short:短整型,通常占2个字节。
int:整型,通常占4个字节。
long:长整型,通常占4或8个字节。
long long:超长整型,通常占8个字节。

short a = 10;
int b = 100;
long c = 100000;
long long d = 1000000000;

(2)浮点型

浮点型变量用于存储小数值。浮点型变量有以下两个子类型:

float:单精度浮点型,通常占4个字节。
double:双精度浮点型,通常占8个字节。

float a = 1.23f;
double b = 3.1415926;

(3)字符型

字符型变量用于存储字符值。字符型变量只能存储一个字符。

char a = 'A';

(4)布尔型

布尔型变量用于存储真假值。布尔型变量只有两个可能的值:truefalse

bool a = true;

1.4 变量作用域

变量作用域是指变量在程序中可见的范围。

(1)局部变量

局部变量是定义在函数内部的变量,只能在函数内部访问。当函数执行完毕后,局部变量就会被销毁。

#include <iostream>
void func()
{
    int num = 10; // 局部变量
    std::cout << num << std::endl;
}
int main()
{
    func();
    return 0;
}

(2)全局变量

全局变量是定义在函数外部的变量,可以在整个程序中访问。全局变量不会在函数执行完毕后被销毁,它们会在程序结束时才释放。

#include <iostream>

int num = 10; // 全局变量

void func()
{
    std::cout << num << std::endl;
}

int main()
{
    func();
    return 0;
}

(3)静态变量

静态变量是在函数内部定义并且只能在函数内部访问的变量,但是它们和局部变量不同。静态变量在函数执行完毕后并不会被销毁,而是保持它们的值直到下一次调用这个函数。

#include <iostream>

void func()
{
    static int num = 10; // 静态变量
    std::cout << num << std::endl;
    num++;
}

int main()
{
    func(); // 输出 10
    func(); // 输出 11
    return 0;
}

2. 常量

常量是一个固定的值,不可更改。一旦定义了常量,它的值在程序执行期间不能被改变。

2.1 定义常量

定义常量时需要使用 const 关键字。语法如下:

const data_type variable_name = value;

其中,data_type表示常量的数据类型,variable_name表示常量的名称,value表示常量的初始值。例如:

const int NUM = 10;
const double PI = 3.1415926;

2.2 常量类型

(1)字符串常量

字符串常量是由字符序列组成的常量。C++中,字符串常量必须使用双引号来括起来。

const char* STR = "Hello, World!";

(2)字符常量

字符常量是由单个字符组成的常量。C++中,字符常量必须使用单引号来括起来。

const char CHAR = 'A';

(3)整型常量

整型常量用于存储整数值。整型常量可以是十进制、八进制或十六进制。

const int DEC_NUM = 10;
const int OCT_NUM = 012; // 八进制,等价于十进制的 10
const int HEX_NUM = 0x0A; // 十六进制,等价于十进制的 10

(4)浮点型常量

浮点型常量用于存储小数值。浮点型常量可以是单精度或双精度。

const float FLOAT_NUM = 1.23f;
const double DOUBLE_NUM = 3.1415926;

(5)布尔常量

布尔常量用于存储真假值。布尔常量只有两个可能的值:true和false。

const bool BOOL_TRUE = true;
const bool BOOL_FALSE = false;

(6)枚举(enum)常量

枚举常量用于在程序中定义命名的整数值,可以通过以下方式定义:

enum Color {Red, Green, Blue};

上述代码定义了一个名为Color的枚举类型,其中包含三个枚举常量:Red、Green和Blue。默认情况下,这些枚举常量都会被分配一个整数值,从0开始递增。例如,在上面的示例中,Red将被分配整数值0,Green将被分配整数值1,Blue将被分配整数值2。

2.3 常量作用域

与变量类似,常量也具有作用域。常量的作用域决定了它在程序中的可见范围。

(1)局部常量

局部常量是在函数内部定义并且只能在函数内部访问的常量。当函数执行完毕后,局部常量就会被销毁。

void func()
{
    const int NUM = 10; // 局部常量
    // ...
}

int main()
{
    func();
    return 0;
}

(2)全局常量

全局常量是在函数外部定义的常量,可以在整个程序中访问。全局常量不会在函数执行完毕后被销毁,它们会在程序结束时才释放。

const int NUM = 10; // 全局常量

void func()
{
    // ...
}

int main()
{
    std::cout << NUM << std::endl;
    return 0;
}

2.4 常量用法

(1)防止修改

常量可以防止程序中的变量值被修改。例如,在函数中使用常量来确保函数参数的值不被修改:

void func(const int& num)
{
    // num = 20; // error: num 是一个常量
    // ...
}

(2)常量表达式

常量表达式是指在编译时就能计算出结果的表达式。可以使用常量表达式来定义数组大小、枚举值等。

const int ARRAY_SIZE = 10;
enum Color { RED = 1, GREEN = 2, BLUE = 3 };

(3)条件编译

条件编译通常用于在不同的平台上编译代码。可以使用常量来进行条件编译。

#ifdef _WIN32
    // Windows 特定代码
#endif

#ifdef __linux__
    // Linux 特定代码
#endif

3. 总结

20年前学习C++语言的幼稚记录在这里插入图片描述

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

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

相关文章

淘宝搜广推技术备注

第一篇文章 一、序列特征处理方式 1&#xff1a;淘宝的类目体系中&#xff0c;有大类目、小类目&#xff08;淘宝大类目和小类目怎么区分&#xff1f;有何运营技巧&#xff1f;-卖家网&#xff09;&#xff0c;在做推荐系统时&#xff0c;有个sim建模&#xff08;search-base…

【Java】抽象类接口

目录 1.抽象类 2.接口 2.1实现多个接口 2.2接口之间的关系 2.3接口使用实例 2.3.1Comparable接口 2.3.2Comparator接口 2.3.2Clone接口 2.4抽象类与接口的区别 1.抽象类 定义&#xff1a;抽象方法&#xff1a;这个方法没有具体的实现&#xff1b; 抽象类&#xff1a;不…

边学边记——数据结构☞和搜索有关的数据结构(搜索树,Set,Map,哈希表)

目录 模型 一、搜索 1. 场景 2. 搜索树 2.1 概念 2.2 查找 2.3 插入 2.4 删除 2.5 实现 2.6 性能分析 2.7 和Java的关系 二、Set 1. 常见方法 2. 注意 三、Map 1. 关于Map.Entry的说明,> 2. Map的常用方法说明 3. 注意 四、哈希表 1. 概念 2. 冲突 2…

[论文分享] VOS: Learning What You Don‘t Know by Virtual Outlier Synthesis

这篇文章是ICLR‘ 2022的一篇文章。 No.contentPAPER{ICLR’ 2022} VOS: Learning What You Don’t Know by Virtual Outlier SynthesisURL论文地址CODE代码地址 Motivation 现有OOD Detection方法大多依赖于真实的离群点数据集进行模型正则化&#xff0c;实际应用中过于昂…

常用位运算

一、求解二进制表示的第k位数字 #include<iostream> using namespace std;int main() {int n 10; // 例如&#xff0c;十进制10用二进制表示为1010 for(int k3;k>0;k--)cout << (n >> k & 1);// 第一步&#xff1a;右移k位// 第二步&#xff1a; &am…

JVM基础总结

文章目录 一、程序计数器二、Java虚拟机栈栈内存溢出【StackOverflowError】线程运行诊断 三、本地方法栈【Native Method Stacks】四、堆【Head】线程共享堆内存溢出【OutOfMemoryError&#xff1a;Java heap space】堆内存诊断 五、方法区【Method Area】线程共享运行时常量池…

Springboot +Flowable,为流程设置租户

一.简介 什么叫flowable的租户呢&#xff1f;这边举个例子&#xff1a; 假设现在有 A、B、C、D 四个子系统&#xff0c;四个子系统都要部署同一个名为 leave 的流程&#xff0c;如何区分四个不同子系统的的流程呢&#xff1f;通过租户就可以解决这个问题。Flowable 中的租户其…

dell r750服务器安装centos系统全记录

1、启动盘制作 1.1 下载系统 打开 https://www.centos.org/download/ 任意选择一个镜像网站&#xff0c;博主选择的是163镜像 下载内存为4g镜像文件 这里也可以参考 https://blog.csdn.net/weixin_46703995/article/details/121191113 1.2 下载启动盘制作软件 linux系统一…

Denoising Diffusion Probabilistic Model,DDPM阅读笔记——(二)

Denoising Diffusion Probabilistic Model&#xff0c;DDPM阅读笔记 一、去噪扩散概率模型&#xff08;Denoising Diffusion Probabilistic Model&#xff0c;DDPM&#xff09; 一、去噪扩散概率模型&#xff08;Denoising Diffusion Probabilistic Model&#xff0c;DDPM&…

C++数据结构:手撕红黑树

目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录&#xff1a;红黑…

TypeScript进阶

目录 TypeScript 与 Vue 文档说明 vscode 插件说明 准备页面基本结构 defineProps与Typescript defineEmits与Typescript ref与Typescript reactive与Typescript computed与Typescript 事件对象与Typescript 模板Ref与Typescript 可选链操作符和非空断言 TypeScript…

21.网络爬虫—js逆向详讲与实战

网络爬虫—js逆向 js逆向JavaScript逆向的详细讲解实战演示有道翻译设置密钥和初始向量对密钥和初始向量进行哈希处理创建AES对象并解密消息移除padding并返回结果 前言&#xff1a; &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&#x1f…

python基于卷积神经网络实现自定义数据集训练与测试

样本取自岩心照片&#xff0c;识别岩心是最基础的地质工作&#xff0c;如果用机器来划分岩心类型则会大大削减工作量。 下面叙述中0指代Anhydrite_rock&#xff08;膏岩&#xff09;&#xff0c;1指代Limestone&#xff08;灰岩&#xff09;&#xff0c;2指代Gray Anhydrite_r…

深度学习-第T6周——好莱坞明星识别

深度学习-第T6周——好莱坞明星识别 深度学习-第T6周——好莱坞明星识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 …

Flutter学习之旅 - 页面布局Stack层叠组件

文章目录 StackPositioned定位布局浮动导航(StackPositioned)FlutterMediaQuery获取屏幕宽度和高度StackAlign Stack Stack意思是堆的意思&#xff0c;我们可以用Stack结合Align或者Stack结合Positioned来实现页面的定位布局 属性说明alignment配置所有元素显示位置children子组…

23.Lambda表达式

Lambda表达式 一、Lambda表达式背景 Lambda 表达式(lambda expression)是一个匿名函数&#xff0c;Lambda表达式基于数学中的λ演算得名&#xff0c;直接对应于其中的lambda抽象(lambda abstraction)&#xff0c;是一个匿名函数&#xff0c;即没有函数名的函数。Lambda表达式…

2023-05-05 背包问题

背包问题 1 01背包和完全背包问题 01背包问题 有N件物品和一个容量为V的背包&#xff0c;第i件物品的体积是v[i]、价值是w[i]&#xff0c;每种物品只可以使用一次&#xff0c;求将哪些物品放入背包可以使得价值总和最大。这里的w是weight即权重的意思 这是最基础的背包问题&a…

【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手

文章目录 前言环境列表视频教程1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 转载自远控源码文章&#xff1a;飞书接入ChatGPT - 将ChatGPT集…

Ubuntu 如何查看 CPU 架构、系统信息、内核版本、版本代号?

Ubuntu 查看 CPU 架构、系统信息、内核版本、版本代号等相关信息有很多方式&#xff0c;本文介绍几种常用的命令。 x86 架构与 ARM 架构的 CPU 架构不同&#xff0c;如果回显为 aarch64 表示为 ARM 架构&#xff0c;如果回显为 x86_64 表示为 x86 架构&#xff0c;参考《CPU 架…

Prometheus快速入门

Prometheus快速入门 环境准备 三台主机&#xff0c;配置好主机名 各自配置好主机名 # hostnamectl set-hostname --static server.cluster.com ... 三台都互相绑定IP与主机名 # vim /etc/hosts 192.168.126.143 server.cluster.com 192.168.126.142 agent.clu…