逆向基础--C++ 作用域、常量、修饰符类型 (03)

news/2025/11/10 11:07:23/文章来源:https://www.cnblogs.com/MrHSR/p/19203240

逆向基础--C++ 作用域、常量、修饰符类型 (03)

一. 作用域介绍

  局部作用域:在函数内部声明的变量具有局部作用域,它们只能在函数内部访问。局部变量在函数每次被调用时被创建,在函数执行完后被销毁

  全局作用域:在所有函数和代码块之外声明的变量具有全局作用域,它们可以被程序中的任何函数访问。全局变量在程序开始时被创建,在程序结束时被销毁。 

  块作用域:在代码块内部声明的变量具有块作用域,它们只能在代码块内部访问。块作用域变量在代码块每次被执行时被创建,在代码块执行完后被销毁

  类作用域:在类内部声明的变量具有类作用域,它们可以被类的所有成员函数访问。类作用域变量的生命周期与类的生命周期相同

  注意:如果在内部作用域中声明的变量与外部作用域中的变量同名,则内部作用域中的变量将覆盖外部作用域中的变量。在C#中会编译出错,但C++中不会,如下代码所示:

class MyClass
{
public:int Total = 10;void tempFunc() {int Total = 100;//最终输出100std::cout << "Total:" << Total;}
};

  1.1 局部作用域 ---在函数内部声明的变量具有局部作用域,它们只能在函数内部访问

int main ()
{// 局部变量声明int a, b;int c;// 实际初始化a = 10;b = 20;c = a + b;cout << c;
}

  1.2 全局变量---通常是在程序的头部,函数和代码块之外声明的变量具有全局作用域

// 全局变量声明
int g;int main ()
{// 局部变量声明int a, b;// 实际初始化a = 10;b = 20;g = a + b;cout << g;
}

  1.3 块作用域--只能在代码块内部访问

  if (a == 10) {short  c = 20;  //块作用域}

  1.4 类作用域

// MyClass要放在上面,注意类定义顺序问题
class MyClass {public: static std::string UserName;//声明 并不分配存储空间/*inline 声明即定义,从 C++17 开始引入的特性有这个特性Address就不需要静态成员类外定义,与C#、java写法类似*/ inline static std::string Address = "湖南长沙";
};//静态成员需要类外定义
std::string MyClass::UserName="张三"; //定义,分配存储空间
int main()
{std::cout << MyClass::UserName+"\n";std::cout << MyClass::Address;
}

 

二.常量

  常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

  2.1 整数常量

    整数常量可以是十进制、八进制或十六进制的常量。前缀指定:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。

    整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),

    L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。

//以下是各种类型的整数常量的实例
85         // 十进制
0213       // 八进制 
0x4b       // 十六进制 
30         // 整数 
30u        // 无符号整数 
30l        // 长整数 
30ul       // 无符号长整数

  2.2 浮点常量

    浮点常量由整数部分、小数点、小数部分和指数部分组成。可以使用小数形式或者指数形式来表示浮点常量。

    当使用小数形式表示时,必须包含整数部分  或  小数部分,或同时包含两者。

    当使用指数形式表示时, 必须包含小数点  或   指数   或同时包含两者。带符号的指数是用 e 或 E 引入的。

    后缀 'f' 或 'F' 表示 float 类型

//下面列举几个浮点常量的实例 
3.14159       // 合法的 
314159E-5L    // 合法的,指数部分是E-5表示乘以10的-5次方  ==314159 * 10^(-5),L表示长整数
.5               // 合法的 
5.               // 合法的 
.5e-5          // 合法的    0.5乘以10的-5次方
5.e0            // 合法的   5乘以10的0次方

510E          // 非法的:不完整的指数
210f          // 非法的:没有小数或指数
.e55          // 非法的:缺少整数或分数

  2.3 定义常量

    在 C++ 中,有两种简单的定义常量的方式:1)使用 #define 预处理器; 2)使用 const 关键字

    在C++中,推荐使用const代替#define来定义常量,因为const提供了类型安全和作用域。

    请注意,把常量定义为大写字母形式。

#include <iostream>
using namespace std;
int main()
{const int  LENGTH = 10;const int  WIDTH  = 5;const char NEWLINE = '\n';int area;  area = LENGTH * WIDTH;cout << area;cout << NEWLINE;
}

 

 三. 修改符类型

  C++ 允许在 char、int 和 double 数据类型前放置修饰符。下面表格列出了数据类型修饰符

数据类型 描述
signed --有符号类型 表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型
unsigned --无符号类型 表示变量不能存储负数。对于整型变量来说,unsigned 可以将变量范围扩大一倍。
short 表示变量的范围比 int 更小。 short int 可以缩写为 short。如 short int  x=1000, 或简写short x=1000
long

表示变量的范围比 int 更大。long int 可以缩写为 longt。如 long int  x=100000000,

或简写long x=100000000

long long 示变量的范围比 long 更大。C++11 中新增的数据类型修饰符
float 表示单精度浮点数
double 表示双精度浮点数
bool 表示布尔类型,只有 true 和 false 两个值
char 表示字符类型
wchar_t 表示宽字符类型,可以存储 Unicode 字符

  下面是变量声明定义的示例    

signed int num1 = -10; // 定义有符号整型变量 num1,初始值为 -10
unsigned int num2 = 20; // 定义无符号整型变量 num2,初始值为 20short int num1 = 10; // 定义短整型变量 num1,初始值为 10
long int num2 = 100000; // 定义长整型变量 num2,初始值为 100000long long int num1 = 10000000000; // 定义长长整型变量 num1,初始值为 10000000000float num1 = 3.14f; // 定义单精度浮点数变量 num1,初始值为 3.14
double num2 = 2.71828; // 定义双精度浮点数变量 num2,初始值为 2.71828bool flag = true; // 定义布尔类型变量 flag,初始值为 truechar ch1 = 'a'; // 定义字符类型变量 ch1,初始值为 'a'
wchar_t ch2 = L''; // 定义宽字符类型变量 ch2,初始值为 '你'

 

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

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

相关文章

2025年石棉橡胶板厂家联系电话推荐:精选老牌企业速查指南

在工业设备维护、管道密封、化工防腐等场景中,石棉橡胶板因其耐高温、耐油、耐酸碱的特性被广泛应用。2025年,随着国内大型基建项目陆续开工,市场对高品质石棉橡胶板的需求持续攀升。为了帮助采购经理、工程承包商、…

2025年石棉橡胶板厂家联系电话推荐:源头工厂直联通道

在工业设备密封、管道法兰连接、热力管网补偿等场景里,石棉橡胶板因其耐高温、耐油、耐酸碱的特性被广泛应用。2025年国内基建与技改项目持续升温,市场对高品质石棉橡胶板的需求同步放大。面对众多自称“源头工厂”的…

2025年石棉橡胶板厂家联系电话推荐:五强厂家速查指南

在工业密封材料采购中,时间就是产能。2025年,随着高温管网、化工装备、船舶维修等项目密集开工,石棉橡胶板作为耐高温、耐油、耐酸碱的核心垫片材料,需求量持续攀升。面对市面上品牌繁杂、价格参差、质量口碑不一的…

2025年评价高的真丝绒热门厂家推荐榜单

2025年评价高的真丝绒热门厂家推荐榜单行业背景与市场趋势真丝绒作为一种兼具奢华质感与实用性能的高端面料,近年来在服装、家纺及装饰领域的需求持续增长。根据中国纺织品商业协会最新发布的《2024-2025年中国高端面…

2025年比较好的镭射激光灯厂家推荐及选购参考榜

2025年比较好的镭射激光灯厂家推荐及选购参考榜行业背景与市场趋势随着舞台演艺、文旅夜游、商业展示等领域的快速发展,镭射激光灯作为重要的视觉效果设备,市场需求持续增长。据《2024-2029年中国舞台灯光设备行业市…

2025年杭州刑事律师权威推荐榜单:劳动纠纷律师/刑事律师/离婚律师团队精选

在法治建设不断深化的背景下,专业刑事律师已成为维护司法公正的重要力量。杭州作为长三角地区的核心城市,其法律服务市场呈现出专业化、精细化的特点。本文基于区域刑事法律服务市场的专业能力、案件处理效果及客户反…

2025年11月geo优化公司推荐:知名机构排行榜与口碑评价对比指南

一、引言 生成式引擎优化(GEO)已成为企业在AI搜索生态中获取增量流量的核心入口。对于市场、运营及技术负责人而言,如何在DeepSeek、豆包、通义千问、元宝、Kimi等多平台同步提升品牌可见度,同时控制试错成本,是当…

2025年11月geo优化公司推荐:知名机构排行榜与口碑评价

一、引言 生成式引擎优化(GEO)已成为企业在AI搜索生态中获取增量流量的核心入口。面对DeepSeek、豆包、通义千问、元宝、Kimi等多平台算法差异,品牌方、电商运营者与成长型公司均希望以可控成本实现“一次部署、全域…

win 端口进程管理

1. 打开命令提示符按下 Win + R 键,输入 cmd,然后按 Enter。或者以管理员身份运行命令提示符(右键点击 cmd 图标,选择“以管理员身份运行”)。2. 查看所有端口的使用情况输入以下命令列出所有活动端口及其对应的进…

P14467 [COCI 2025/2026 #1] 扔球 / Krugomet 题解

P14467 [COCI 2025/2026 #1] 扔球 / Krugomet 题解P14467 [COCI 2025/2026 #1] 扔球 / Krugomet 题解 题目链接 我的博客 思路 这道题,\(k\) 的取值范围很大,我们考虑倍增。 设 \(f_{i,j}\) 表示第 \(i\) 个人,经过…

【ACM出版、EI检索稳定】2025年人工智能、业务转型和数据科学创新国际学术会议(ICBTDS 2025)

【EI Compendex、Scopus检索】 2025年人工智能、业务转型和数据科学创新国际学术会议(ICBTDS 2025) 2025 International conference on AI-Driven Business Transformation and Data Science Innovation “人工智能、…

2025年石棉橡胶板厂家联系电话推荐:采购避坑与售后无忧

在工业设备密封领域,石棉橡胶板因其耐高温、耐油、耐酸碱及良好的压缩回弹性能,长期被电力、石化、冶金、造船等行业视为关键耗材。2025年,随着设备检修周期缩短、项目集中开工,市场对高品质石棉橡胶板的需求再度攀…

MATLAB实现海浪数据处理与谱分析

一、数据准备与预处理 1. 数据获取与格式转换 % 读取原始海浪数据(示例:时间-波高数据) data = readtable(wave_data.txt, Delimiter, \t); t = data.Time; % 时间向量 eta = data.Height; % 波高向量% 数据预…

VP 2023CCPC Harbin

2025.11.08 1:00 - 6:00 咕。

路由器和静态路由配置实验(2)

实验完成时的拓扑图交换机2950A管理ip,客户机模式,创建分配vlanping测试连通性 交换机与主机配置2950A中继口配置2950Bping测试连通性 交换机与主机A20主机A30主机配置中继口配置路由器主机名,清除f0/0端口ip地址,…

离散数学作业 251103

\(\def \gp#1#2{\lang #1,#2 \rang}\) \[2.\because a 是极小元\therefore \forall x\in P,a\le x 或 a,x不可比较。\\ 若a不是最小元,\exist x\in P,a,x不可比较。\\ \because x不是极小元\therefore\exist y\in P,y…

解码LVGL中文字体、输入框、键盘

字体控件(lv_label + 字体管理):中文显示方案 LVGL 内置字体仅支持英文 / 数字,中文需 “提取固定汉字” 或 “动态加载 TTF”。 场景 1:有限汉字(固定文本,如 “登录”“取消”) 适用于固定中文文本,通过 LV…

2025年比较好的钢塑课桌椅优质厂家推荐榜单

2025年优质钢塑课桌椅厂家推荐榜单:专业解析与采购指南行业背景与市场趋势随着教育现代化进程加速和校园设施升级需求激增,钢塑课桌椅行业正迎来前所未有的发展机遇。据中国教育装备行业协会最新数据显示,2024年我国…

2025年靠谱的服装激光打孔机厂家最新实力排行

2025年靠谱的服装激光打孔机厂家最新实力排行行业背景与市场趋势随着服装行业对精细化、个性化生产需求的不断提升,激光打孔技术凭借其高精度、高效率、无接触加工等优势,正逐渐成为服装制造领域的重要工艺手段。根据…

AIGC|数字人平台技术创新与选择指南 - 二当家

数字人技术:开启未来交互新纪元 从概念到落地,数字人技术如何重塑产业生态? 解密数字人技术内核:像衍科技如何以创新驱动行业变革? 第一部分:数字人是什么? 数字人,是依托人工智能、计算机图形学、自然语言处理…