CSC-NOTESCSC-NOTES
首页
  • 前端笔记

    • Vue
    • React
    • CSS
    • JavaScript
    • TypeScript
  • 服务端笔记

    • NodeJS
  • C/C++

    • C语言
  • 数据库笔记

    • Postgresql
  • 计算机网络

    • 计算机网络基础
    • 计算机网络进阶
  • 操作系统

    • 操作系统基础
    • 操作系统进阶
  • 前端工程化

    • Vue
    • React
  • 后端工程化

    • NodeJS
  • 数据结构
  • 算法
  • 前端面试
  • 后端面试
Github
首页
  • 前端笔记

    • Vue
    • React
    • CSS
    • JavaScript
    • TypeScript
  • 服务端笔记

    • NodeJS
  • C/C++

    • C语言
  • 数据库笔记

    • Postgresql
  • 计算机网络

    • 计算机网络基础
    • 计算机网络进阶
  • 操作系统

    • 操作系统基础
    • 操作系统进阶
  • 前端工程化

    • Vue
    • React
  • 后端工程化

    • NodeJS
  • 数据结构
  • 算法
  • 前端面试
  • 后端面试
Github
  • C/C++
    • C语言
      • 1、初识C语言
      • 2、C语言概述
    • C++
      • 1、C++历史
      • 2、数据类型

数据类型

学习一门编程语言,首先要掌握它的数据类型。不同的数据类型占用的内存空间不一样,合理定义数据类型可以优化程序的运行。

1. 第一个C++程序

先来看一个简单的程序示例,经典的“Hello World!”。

#include<iostream>                    // 包含iostream.h的头文件
using namespace std;                  // 使用std命名空间
int main() {                          // 主函数main入口
  cout << "Hello World!" << endl;     // 输出语句 Hello World!
  return 0;
}

在这个简单的程序中,出现了头文件、命名空间、主函数、输出语句、字符串常量、注释等概念,下面来一起认识一下。

1.1 #include 头文件

C++程序中,带‘#’号的语句称为预编译命令,该命令会在程序编译之前进行。include的含义是“包含”和“引用”,#include命令则为包含头文件命令,表示本程序将嵌入指定的头文件。

所谓头文件,指的是程序中用于声明函数,变量、宏等的文件,通常以.h结尾。使用头文件(包括系统头文件和自定义头文件)可以方面地引用已经写好的代码,提高代码的复用性和可维护性,同时降低代码的耦合度,使代码更加模块化。

因此第一行代码“#include<iostream>”表示包含C++标准输入输出流头文件 iostream.h,也就是说,程序编译时会在此将iostream.h头文件中的内容展开

1.2 命名空间(namespace)

一个中大型的软件往往有多名程序员开发,会使用大量的常量、变量、函数、结构体、枚举、类等,因此不可避免地会出现命名冲突的问题。工程越大,命名互相冲突的可能性就越大。为了方便的解决这个问题,C++引入了 命名空间 的概念。在不同的命名空间里,同名变量放在一起编译不会出现问题。

因此第二行代码 using namespace std; 表示使用C++标准库定义的 std 命名空间。

1.3 主函数 main()

main() 函数又称为主函数,是C++程序的执行入口。程序将从 main() 函数的第一行开始执行,主函数执行结束,整个程序也就执行结束了。其中,main为函数名“()”里可以放置参数。

int main()是函数的函数头,表示main()函数将返回一个整数的数据类型结果;大括号 {} 中的内中是需要执行的函数体。函数体中,各行代码将按照先后顺序依次执行,从上到下依次执行。

1.4 输出流语句

“cout << "Hello World!"”,表示通过数据输出流,输出英文“Hello World!”。其中双引号代表该语句是字符串常量,cout 表示输出流,<< 表示将字符串传入到输出流中。

注意

C语言中,使用scanf()、printf()函数进行数据的输入和输出操作。C++兼容C语言。因此这两个格式化输入和输出函数在C++中仍然可以使用。但是C++提供了一套全新的、更容易使用的输入输出库, 即使用 cout << 输出,cin >> 输入。

1.5 注释

代码中使用了多处“//”注释,对本行代码进行解释说明。编译器不会对注释部分进行编译。C++程序中有两种注释方法:单行注释 //, 多行注释 /* */。

2. 关键字和标识符

关键字又称保留字,是C++中规定具有特殊意义的字符串,用户定义的常量、变量、函数等名称不能与保留字相同,否则会出错。

asmautobreakcasecatchcharclassconstcontinue
defaultdeletedodoubleeleseenumexternfloatfor
friendgotoifinlineintlongnewoperatoroverload
privateprotectedpublicregisterreturnshortsignedsizeofstatic
structswitchthistemplatethrowtrytypedefunionunsigned
virtualvoidvolatilewhile

提示

这些关键字(保留字)不需要背诵,在开发环境编写代码中,关键字会以特殊的颜色显示。在后续学习中,会逐渐熟悉这些关键字的用法,不需要死记硬背

标识符:是对C++程序中变量、常量、语句标号以及用户自定义函数等名称进行标识的符号。其名称规则如下:

  • 标识符必须以字母、数字以及下划线组成,且不能以数字开头
  • C++大小写敏感,因此大写和小写英文相同的英文字母代表不同的标识符
  • 标识符不能是关键字
  • 标识符应该体现功能含义,便于理解(推荐但不强制)

3. 基本数据类型

C++包括整型、浮点型、字符型、布尔型等基本数据类型,数组、结构体、共同体等构造数据类型,指针类型,以及用户自定义数据类型。C++能够实现复杂的数据结构,还可以定义类,实现面向对象编程。

基本数据类型:

整数类型:短整型(short)、整型(int)、长整型(long)。

实数类型(浮点数类型):单精度(float)、双精度(double)、长双精度(long long)。

字符类型:char。

布尔类型:bool。

4. 常量

程序运行的过程中,其值不能改变的量为常量。常量包含整型常量、浮点型常量、字符常量、字符串常量等。

小栗子:

#include<iostream>
using namespace std;
int main() {
  cout << 2025 << endl; // 输出整数
  cout << 3.14 << endl; // 输出小数
  cout << 'a'  << endl; // 输出字符
  cout << "Hello World!" << endl; // 输出字符串
  return 0;
}

4.1 整型常量

整型常量就是整型常数(没有小数部分),如123、-7、0等。编写代码时,可将整型常量表示为十进制、八进制和十六进制三种表示方式。

  • 十进制:日常见到的整数都是十进制。十进制数使用0-9来表示所有数,递进关系为逢十进一,除了0本身之外,其他十进制不能以0开头
  • 八进制:使用0-7表示所有数,递进关系是逢八进一。八进制常量前要加上0作为前缀,如0123、0432等
  • 十六进制:使用0-9和字母a-f或(A-F)来表示所有数,递进关系为逢十六进一。十六进制常量前要加上0x或0X作为前缀,如0x123、0X3b4a等

4.1 浮点型常量

浮点型(又称为实型)常量就是我们常见的小数,只能采用十进制形式表示。表现形式有两种小数表示和指数表示。

1、小数表示法

小数表示法由整数部分和小数部分组成,中间用小数点分割。例如,0.0、2.25、-0.002等都是合法的实型常量。

另外整数部分和小数部分可以省略一处,例如,.2表示小数0.2,2.表示小数2.0。

2、指数表示法

指数表示又称科学计数法,指数部分以e或者E开始,后面跟整数。

1.2e20表示 1.2 X 10^20

提示

在字母e(或E)之前的小数部分中,小数点左边应有且只有一位非零的数字,成为规范化的指数形式。

4.2 字符常量

使用一对单引号括起来的字符就是字符常量,如 'a'、'A'、'?'等。编译代码时,编译器会根据ASCII码表将对应字符常量转化为整型常量。其中'a'对应的是97,'A'对应的是65。

除了这些固定字符,ASCII码表中还有很多转义字符,转义字符是一类特殊的字符常量,通常以反斜杠 "\" 开头,后面跟一个或多个字符。下面是一些常用的转义字符以及对应的意义。

转义字符意义ASCII码转义字符意义ASCII码
\0空字符0\反斜杠93
\n换行10\'单引号字符39
\t水平制表9\"双引号字符34
\b退格8\a响铃7
\r回车13\f换页12
\ddd1~3位八进制数代表的字符\xhh1~2位十六进制数代表的字符

4.2 字符串常量

字符串常量是用一对双引号括起来的字符序列。例如 "Hello World!"、"Welcome to learn C++!!!"都是合法的字符串常量。其中,""表示一个空字符串,此时字符串的长度为0。

字符串常量实际上是一个字符数组,可以将字符串分割为若干个字符,字符的数量就是字符串的长度。字符串常量一般用来给字符数组变量赋值或是直接作为实参传递,为告知编译器字符串已经结束,一般再给字符串数组赋值时在字符串的末尾加上字符'\0',表示字符结束。如果不加可能会导致意想不到的错误。

提示

字符'A'和字符串"A"含义不同。内存中,字符'A'只包含一个字符:字符串"A"其实是"A\0"两个字符组成,字符串长度为2。

4.3 其他常量

除了整型、浮点型、字符型、字符串型常量外,还存在布尔常量、枚举常量和宏定义常量等。

  • 布尔常量:布尔类型时表示是否、对错等真假值判断的数据类型,常用在逻辑判断中。布尔值类型只有true和false两个取值。true表示真,其值是1、false表示为假,其值是0
  • 枚举常量:枚举型数据中定义的数据都是常量
  • 宏定义常量:通过#define宏定义的值也是常量

💬 欢迎评论!请确保您已登录 GitHub。

最近更新: 2025/7/9 13:40
Contributors: onion-chen
Prev
1、C++历史