C++基础知识【1】数据类型和变量

news/2024/4/24 21:02:16/文章来源:https://blog.csdn.net/baidu_18624493/article/details/129255205

目录

 一、数据类型

1、基本数据类型

1.1 整型

1.2 浮点型

1.3 字符型

1.4 布尔型

2、用户自定义数据类型

3、typedef 声明

4、枚举类型

二、变量

2.1、定义

2.2、变量的命名规则:

2.4、变量的作用域

三、常量

定义常量

四、C++中的关键字


 一、数据类型

        C++ 是一种静态类型的编程语言,其数据类型主要分为基本数据类型和用户自定义数据类型两种。

1、基本数据类型

        C++ 的基本数据类型包括整型、浮点型、字符型和布尔型。其中,整型又可细分为有符号整型和无符号整型,浮点型又可细分为单精度浮点型和双精度浮点型。

1.1 整型

        C++ 中的整型包括以下类型:

  • short:短整型,占2个字节。
  • int:整型,占4个字节。
  • long:长整型,占4个或8个字节,根据编译器不同而定。
  • long long:超长整型,占八个字节。

        以上整型类型都有对应的无符号类型,例如 unsigned short 等。

1.2 浮点型

        C++ 中的浮点型包括以下类型:

  • float:单精度浮点型,占4个字节,可表示大约 6 位有效数字。
  • double:双精度浮点型,占8个字节,可表示大约 15 位有效数字。
  • long double:扩展精度浮点型,占12个或16个字节,根据编译器不同而定。

1.3 字符型

        C++ 中的字符型一种是char,占1个字节。可以用于存储 ASCII 码字符。

        还有一种是wchar_t,宽字符型,是一种扩展的存储方式,占2或4个字节,其定义是:

typedef short int wchar_t;

1.4 布尔型

        C++ 中的布尔型只有 bool 一种,占1个字节,用于存储逻辑值,true 表示真,false 表示假。

2、用户自定义数据类型

 C++ 中的用户自定义数据类型也称为复合数据类型,主要包括以下几种:

  1. 数组:表示同一类型的多个元素的集合。
  2. 结构体(struct):表示多个不同数据类型的变量的集合。
  3.  枚举类型(enum):表示一组命名的整数常量。
  4.  指针(pointer):表示一个内存地址,可以指向其他变量或数据。
  5.  类(class):一种更为复杂的数据类型,可以封装数据和方法,实现面向对象编程的特性。    

3typedef 声明

        typedef 声明用于为现有类型定义新的别名。其语法如下:

typedef <existing_type> <new_name>;

        其中,existing_type 是已经存在的类型,而 new_name 是为该类型定义的新的别名。

        例如,下面的语句将 int 类型定义为 my_int 的别名:

typedef int my_int;

        这意味着 my_int int 是完全相同的类型,可以互换使用。这个别名可以方便地在程序中使用,特别是当需要多次使用相同类型时。

        除了为基本类型定义别名之外,typedef 也可以用于为结构体、联合体或指针类型定义别名。例如,下面的语句将结构体 student 定义为 my_student 的别名:

typedef struct {char name[50];int age;float gpa;} student;typedef student my_student;

        现在,my_student student 是完全相同的类型,可以互换使用。

4、枚举类型

        枚举类型(Enumeration Type)是一种用户自定义的数据类型,用于定义具有离散值的常量集合。枚举类型可以简化程序中使用常量的方式,提高程序的可读性和可维护性。

        创建枚举,需要使用关键字 enum。枚举类型的一般形式为:

enum <enum_name> {<enumerator1> = <value1>,<enumerator2> = <value2>,...};

        需要注意的是,枚举类型的值可以显式地指定整数值,也可以忽略赋值,没有指定值的情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。

二、变量

2.1、定义

         变量是程序中用于存储数据的一种方式,其定义方式为:数据类型 变量名;例如,int num; 定义了一个整型变量 num。

例如,以下是一些C++变量的定义和初始化: 

int age = 18;float pi = 3.14;double salary = 8000.50;char grade = 'A';bool isMale = true;

2.2、变量的命名规则:

  1. 变量名必须以字母或下划线字符开头。
  2. 变量名不能包含空格或特殊字符,如@、#、$、%等。
  3. 变量名只能包含字母、数字和下划线字符。
  4. 变量名不能是C++关键字和保留字,如if、while、int等。
  5. 变量名最好能够反映变量所代表的含义,以便于代码阅读和维护。尽量不要用缩写。

2.4、变量的作用域

         变量的作用域指的是变量在程序中可见和可访问的范围。C++中变量作用域,包括以下几种:

  1.  全局作用域:在程序中定义的全局变量具有全局作用域,即它们可以在程序的任何位置访问。全局变量通常定义在函数之外。
  2. 局部作用域:在函数或代码块中定义的变量具有局部作用域,即它们只能在定义它们的函数或代码块内访问。局部变量的作用域从变量定义的位置开始,到包含变量定义的代码块结束。
  3. 命名空间作用域:C++ 中的命名空间提供了一种将全局变量和函数封装到命名空间中的方式。在命名空间中定义的变量具有命名空间作用域,即它们只能在命名空间中访问。
  4. 类作用域:在类中定义的成员变量和成员函数具有类作用域,即它们只能通过类对象访问。类作用域也包括在类中定义的静态成员变量和静态成员函数。  
  • 以下一个实例,展示了不同作用域的变量的用法:
  • #include <iostream>using namespace std;int global_var = 10; // 全局变量void func()
    {int local_var = 20; // 局部变量cout << "local_var = " << local_var << endl;
    }namespace ns
    {int ns_var = 30; // 命名空间变量
    }class MyClass
    {
    public:static int class_var; // 类变量void member_func(){int member_var = 40; // 成员变量cout << "member_var = " << member_var << endl;}
    };int MyClass::class_var = 50;int main()
    {cout << "global_var = " << global_var << endl;func();cout << "ns_var = " << ns::ns_var << endl;MyClass obj;obj.member_func();cout << "class_var = " << MyClass::class_var << endl;return 0;
    }
    

三、常量

        在 C++ 中还可以使用常量来存储固定的值。常量可以分为字面常量和符号常量两种。字面常量是指直接出现在程序中,符号常量则是提前定义好的不能改变值的变量。

定义常量

C++ 中,有两种简单的定义常量的方式:

  • 使用 #define 预处理器。例如:
const double PI = 3.1415926; // 定义一个双精度浮点型常量 PI,值为 3.1415926
  • 使用 const 关键字。例如:
#define MAX_NUM 100 // 定义一个整型常量 MAX_NUM,值为 100

         常量的命名规则与变量相同,可以使用字母、数字和下划线,但必须以字母或下划线开头,不能以数字开头。C++ 常量可以用于各种表达式中,包括数学表达式、字符串表达式等。

需要注意的是,字面值常量和 #define 指令定义的常量没有类型,而 const 修饰符定义的常量有类型。另外,const 修饰符定义的常量是在编译时确定的,而 #define 指令定义的常量是在预处理时进行替换的。因此,建议优先使用 const 修饰符定义常量。 

实例:

#include <iostream>using namespace std;const int num1 = 10; // 定义一个整型常量 num1,值为 10const double PI = 3.1415926; // 定义一个双精度浮点型常量 PI,值为 3.1415926#define MAX_NUM 100 // 定义一个整型常量 MAX_NUM,值为 100int main(){int num2 = 20;const int num3 = 30;const int num4 = num1 + num3;const double area = PI * num2 * num2;cout << "num1 = " << num1 << endl;cout << "num3 = " << num3 << endl;cout << "num4 = " << num4 << endl;cout << "area = " << area << endl;cout << "MAX_NUM = " << MAX_NUM << endl;return 0;}

四、C++中的关键字

        C++关键字是指在C++语言中具有特定含义和用途的单词,它们都是C++语言中预定义的标识符,不能用作变量名、函数名等标识符。以下是C++中的关键字:

关键字

描述

alignas

指定内存对齐方式

alignof

获取类型的内存对齐方式

and

逻辑与操作

and_eq

位与操作并赋值

asm

嵌入汇编代码

auto

自动变量声明

bitand

位与操作

bitor

位或操作

bool

布尔类型

break

循环中断

case

switch语句的一个选择

catch

异常处理

char

字符类型

char16_t

16位字符类型

char32_t

32位字符类型

class

定义类

compl

按位取反操作

const

常量声明

constexpr

常量表达式

const_cast

类型转换

continue

循环继续

decltype

推导表达式的类型

default

switch语句的默认选项

delete

删除对象

do

do-while循环

double

双精度浮点类型

dynamic_cast

动态类型转换

else

条件语句

enum

枚举类型

explicit

显示类型转换

export

用于导出函数和数据

extern

外部变量和函数声明

false

布尔假

float

单精度浮点类型

for

循环

friend

友元

goto

跳转语句

if

条件语句

inline

内联函数

int

整型

long

长整型

mutable

可变对象

namespace

命名空间

new

动态分配内存

noexcept

指明函数不会抛出异常

not

逻辑非操作

not_eq

位异或操作并赋值

nullptr

空指针

operator

定义运算符重载

or

逻辑或操作

or_eq

位或操作并赋值

private

类的私有成员

protected

类的保护成员

public

类的公有成员

register

寄存器变量声明 

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

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

相关文章

大数据系统重点

第一章 大数据计算系统概述 1 大数据计算框架概述 计算框架: 一种抽象&#xff0c;在其中提供相应的通用功能供用户编写代码以实现具体功能&#xff0c;从而形成面向应用的软件。 大数据计算框架&#xff1a;面向大数据的计算框架。 Hadoop Hadoop的运行过程 Hadoop的详细…

腾讯云轻量应用服务器和云服务器CVM有什么区别?

腾讯云新推出的轻量应用服务器Lighthouse和原来的CVM云服务器有什么区别&#xff1f;轻量应用服务器Lighthouse是一种易于使用和管理、适合承载轻量级业务负载的云服务器&#xff0c;主要用于Web网站应用&#xff0c;轻量服务器使用及后期运维更加简单方便&#xff1b;云服务器…

【数据结构(四)】树

文章目录树1 树的基本概念1.1 树的定义1.2 基本术语1.3 数的性质2 二叉树的概念2.1 二叉树的定义与特性2.1.1 定义2.1.2 二叉树的性质2.2 几种特殊的二叉树2.2.1 满二叉树2.2.2 完全二叉树2.3 二叉树的存储结构2.3.1 顺序存储2.3.2 链式存储3 二叉树的遍历和线索二叉树3.1 二叉…

敏捷-期末

什么是敏捷开发&#xff1f; 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢&#xff1f;它不是一门技术&#xff0c;它是一种开发方法&#xff0c;也就是一种软件开发的流程&#xff0c;它会指导我们用规定的环节去一步一步完成项目的开…

二叉树路径查找

题目描述&#xff1a;给定一棵二叉树(结构如下)&#xff0c;其中每个节点值为整数。给定一个值 K&#xff0c;求所有满足如下条件的路径并将路径上节点的值打印出来&#xff1a; 1、路径方向必须向下&#xff0c;即只能从父节点指向子节点 2、路径并不是必须从根节点开始或在叶…

一起玩转开源数据库!OceanBase DevCon 之开源生态全景解析

​ 2023 年 3 月 25 日&#xff0c;首次 OceanBase 开发者大会将在北京举办&#xff0c;OceanBase 首席科学家阳振坤与 OceanBase CTO 杨传辉领携众多技术专家&#xff0c;将与开发者共同探讨单机分布式、云原生、HTAP 等数据库前沿趋势&#xff0c;OceanBase 开源技术全景生…

【安卓】安卓设备实现wifi display解决方案

看文章前&#xff0c;我们需要知道的几个概念&#xff1a; 1、Wifi Direct技术&#xff1b; 2、Wifi Display技术&#xff1b; 3、Miracast标准&#xff1b; 安卓手机用户都知道我们的安卓手机有一个wifi直连功能&#xff0c;在点击设置–》WIFI–》更多Wifi设置–》Wifi直连&a…

【Linux】操作系统与Linux — Linux概述、组成及目录结构

目录 一、什么是操作系统&#xff1f;都有那些&#xff1f; 二、Linux概述 三、Linux组成 三、Linux目录结构 四、Linux目录结构 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一下 一、什么是操作系统&#xff1f;都有那些&#x…

Linux | 1. 挂载新硬盘与磁盘管理

如有错误&#xff0c;恳请指出。 1. Ubuntu挂载新硬盘 查看磁盘状态&#xff1a;sudo fdisk -l 1&#xff09;为新硬盘分区 使用 fdisk 指令对 /dev/sdb 进行分区操作&#xff1a;sudo fdisk /dev/sdb。进入分区工具后&#xff0c;我们可以输入 m 看指令说明&#xff0c;注意…

SQL数据库权限管理-10个数据库角色

为便于管理数据库中的权限&#xff0c;SQL 数据库提供了服务器角色、数据库角色、用户等来划分不同用户拥有的权限差异。今天给大家介绍数据库角色对应的权限。 数据库级角色 存在两种类型的数据库级角色&#xff1a; 数据库中预定义的“固定数据库角色”可以创建的“用户定…

New Bing怼人、说谎、PUA,ChatGPT已经开始胡言乱语了

最近&#xff0c;来自大洋彼岸那头的ChatGPT科技浪潮席卷而来&#xff0c;微软将chatGPT整合搜索引擎Bing开启内测后&#xff0c;数百万用户蜂拥而至&#xff0c;都想试试这个「百事通」。 赶鸭子上架&#xff0c;“翻车”了&#xff1f; 但短短上线十几天&#xff0c;嵌入了…

架构篇之如何画出优秀的架构图(二)

今天是架构篇的第二篇文章,跟大家聊聊如何画出好的架构图。 一、架构图分类 1、业务架构 a. 定义:描述系统对用户提供了什么业务功能。 b. 使用场景: 产品规划业务给高P汇报

高通平台开发系列讲解(Sensor篇)AlsPs的工作原理及介绍

文章目录 一、什么是ALS?二、什么是距感(PS)?三、AlsPs的工作原理四、AlsPs的特性五、距感的校准参数说明六、光感的校准参数说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 AlsPs 的工作原理及介绍。 一、什么是ALS? 光感的英文叫做Ambient Li…

大数据|Hadoop系统

目录 &#x1f4da;Hadoop介绍 &#x1f4da;Hadoop优点 &#x1f4da;Hadoop的体系结构 &#x1f430;HDFS的体系结构 &#x1f430;MapReduce的体系结构 &#x1f430;HDFS和MapReduce的协同作用 &#x1f4da;Hadoop与分布式开发 &#x1f430;MapReduce计算模型 &a…

时钟振荡器的作用

引言 如果电子元件没有时钟&#xff0c;你怎么知道你的信号的频率是多少&#xff1f;频率的定义是一秒振荡的次数。一秒是多久&#xff1f;那么为了知道一秒是多久&#xff0c;电子元件的时钟就很重要了&#xff0c;我们通过频率准确的晶振来产生振荡信号。因为晶振的频率是固…

网络安全从入门到精通:30天速成教程到底有多狠?你能坚持下来么?

毫无疑问&#xff0c;网络安全是当下最具潜力的编程方向之一。对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握网络安全看似是一件十分困难的事。至于一个月能不能学会网络安全&#xff0c;这个要看个人&#xff0c;对于时间管理不是很高的&#xff0c;肯…

信贷系统学习总结(5)—— 简单的风控示例(含代码)

一、背景1.为什么要做风控?目前我们业务有使用到非常多的AI能力,如ocr识别、语音测评等,这些能力往往都比较费钱或者费资源,所以在产品层面也希望我们对用户的能力使用次数做一定的限制,因此风控是必须的!2.为什么要自己写风控?那么多开源的风控组件,为什么还要写呢?是不是想…

2023上半年北京/上海/广州/深圳NPDP产品经理认证报名

产品经理国际资格认证NPDP是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年…

已解决The above exception was the direct cause of the following exception:

已解决RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd ImportError: numpy.core.multiarray failed to import The above exception was the direct cause of the following exception: SystemError: returned a result with an err…

HU4056H耐压高达28V,具有电源OVP功能的1A单节锂离子电池线性充电IC

产品概述 HU4056H是一款完整的采用恒定电流/恒定电压的高压、大电流、单节锂离子电池线性充电 IC。最高耐压可达 28V&#xff0c; 6.5V 自动过压保护&#xff0c;充电电流可达 1A。 由于采用了内部 PMOSFET 架构&#xff0c;加上防倒充电路&#xff0c;所以不需要外部隔离二…