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

本文介绍了C++编程中的基础概念,包括数据类型如整型、浮点型、字符型和布尔型,以及用户自定义数据类型如数组、结构体和枚举。详细讲解了变量的定义、命名规则和作用域,同时阐述了常量的定义方法和C++中的关键字使用。
摘要由CSDN通过智能技术生成

目录

 一、数据类型

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,值为 10

const double PI = 3.1415926; // 定义一个双精度浮点型常量 PI,值为 3.1415926

#define MAX_NUM 100 // 定义一个整型常量 MAX_NUM,值为 100

int 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

寄存器变量声明 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从此不归路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值