• C++入门01—从hello word!开始


     1.第一个C++程序

    1.1 创建项目

    第一次使用Visual Studio时: 

     

    1.2 创建文件

     

    1.3 编写代码 

    编写第一个代码:

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. cout << "hello word!" << endl;
    6. system("pause");
    7. return 0;


    1.2 注释

    作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码

    两种格式

    1. 单行注释// 描述信息

      • 通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明

    2. 多行注释/* 描述信息 */

      • 通常放在一段代码的上方,对该段代码做整体说明

    提示:编译器在编译代码时,会忽略注释的内容

     2.基本要素

    2.1 变量

    作用:给一段指定的内存空间起名,方便操作这段内存

    语法数据类型 变量名 = 初始值;

    示例:

    1. #include
    2. using namespace std;
    3. int main() {
    4. //变量的定义
    5. //语法:数据类型 变量名 = 初始值
    6. int a = 10;
    7. int b = 5, c = b+2;
    8. cout << "a = " << a << endl;
    9. system("pause");
    10. return 0;
    11. }

    注意:C++在创建变量时,必须给变量一个初始值,否则会报错

    2.2 常量

    作用:用于记录程序中不可更改的数据

    C++定义常量两种方式

    1. #define 宏常量: #define 常量名 常量值

      • 通常在文件上方定义,表示一个常量

    1. const修饰的变量 const 数据类型 常量名 = 常量值

      • 通常在变量定义前加关键字const,修饰该变量为常量,不可修改

    示例:

    1. //1、宏常量
    2. #define day 7
    3. int main() {
    4. cout << "一周里总共有 " << day << " 天" << endl;
    5. //day = 8; //报错,宏常量不可以修改
    6. //2、const修饰变量
    7. const int month = 12;
    8. cout << "一年里总共有 " << month << " 个月份" << endl;
    9. //month = 24; //报错,常量是不可以修改的
    10. system("pause");
    11. return 0;
    12. }

    2.3 关键字

    作用:关键字是C++中预先保留的单词(标识符)

    • 在定义变量或者常量时候,不要用关键字

    C++关键字如下:

    asmdoifreturntypedef
    autodoubleinlineshorttypeid
    booldynamic_castintsignedtypename
    breakelselongsizeofunion
    caseenummutablestaticunsigned
    catchexplicitnamespacestatic_castusing
    charexportnewstructvirtual
    classexternoperatorswitchvoid
    constfalseprivatetemplatevolatile
    const_castfloatprotectedthiswchar_t
    continueforpublicthrowwhile
    defaultfriendregistertrue
    deletegotoreinterpret_casttry

    提示:在给变量或者常量起名称时候,不要用C++得关键字,否则会产生歧义。

    2.4 标识符命名规则

    作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则

    • 标识符不能是关键字

    • 标识符只能由字母、数字、下划线组成

    • 第一个字符必须为字母或下划线

    • 标识符中字母区分大小写

    建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读

     3.数据类型

    C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存

    3.1 整型

    作用:整型变量表示的是整数类型的数据

    C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同

    数据类型占用空间取值范围
    short(短整型)2字节(-2^15 ~ 2^15-1)
    int(整型)4字节(-2^31 ~ 2^31-1)
    long(长整形)Windows为4字节,Linux为4字节(32位),8字节(64位)(-2^31 ~ 2^31-1)
    long long(长长整形)8字节(-2^63 ~ 2^63-1)

    3.2 sizeof关键字

    作用:利用sizeof关键字可以统计数据类型所占内存大小

    语法: sizeof( 数据类型 / 变量)

    示例:

    1. int main() {
    2. cout << "short 类型所占内存空间为: " << sizeof(short) << endl;
    3. cout << "int 类型所占内存空间为: " << sizeof(int) << endl;
    4. cout << "long 类型所占内存空间为: " << sizeof(long) << endl;
    5. cout << "long long 类型所占内存空间为: " << sizeof(long long) << endl;
    6. system("pause");
    7. return 0;
    8. }

    整型结论:short < int <= long <= long long

    3.3 实型(浮点型)

    作用:用于表示小数

    浮点型变量分为两种:

    1. 单精度float

    2. 双精度double

    两者的区别在于表示的有效数字范围不同。

    数据类型占用空间有效数字范围
    float4字节7位有效数字
    double8字节15~16位有效数字

    示例:

    1. int main() {
    2. float f1 = 3.14f;
    3. double d1 = 3.14;
    4. cout << f1 << endl;
    5. cout << d1<< endl;
    6. cout << "float sizeof = " << sizeof(f1) << endl;
    7. cout << "double sizeof = " << sizeof(d1) << endl;
    8. //科学计数法
    9. float f2 = 3e2; // 3 * 10 ^ 2
    10. cout << "f2 = " << f2 << endl;
    11. float f3 = 3e-2;  // 3 * 0.1 ^ 2
    12. cout << "f3 = " << f3 << endl;
    13. system("pause");
    14. return 0;
    15. }

    3.4 字符型

    作用:字符型变量用于显示单个字符

    语法:char ch = 'a';

    注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号

    注意2:单引号内只能有一个字符,不可以是字符串

    • C和C++中字符型变量只占用1个字节。

    • 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元

    示例:

    1. int main() {
    2. char ch = 'a';
    3. cout << ch << endl;
    4. cout << sizeof(char) << endl;
    5. //ch = "abcde"; //错误,不可以用双引号
    6. //ch = 'abcde'; //错误,单引号内只能引用一个字符
    7. cout << (int)ch << endl;  //查看字符a对应的ASCII码
    8. ch = 97; //可以直接用ASCII给字符型变量赋值
    9. cout << ch << endl;
    10. system("pause");
    11. return 0;
    12. }

    ASCII码表格:

    ASCII控制字符ASCII字符ASCII字符ASCII字符
    0NUT32(space)64@96
    1SOH33!65A97a
    2STX34"66B98b
    3ETX35#67C99c
    4EOT36$68D100d
    5ENQ37%69E101e
    6ACK38&70F102f
    7BEL39,71G103g
    8BS40(72H104h
    9HT41)73I105i
    10LF42*74J106j
    11VT43+75K107k
    12FF44,76L108l
    13CR45-77M109m
    14SO46.78N110n
    15SI47/79O111o
    16DLE48080P112p
    17DCI49181Q113q
    18DC250282R114r
    19DC351383S115s
    20DC452484T116t
    21NAK53585U117u
    22SYN54686V118v
    23TB55787W119w
    24CAN56888X120x
    25EM57989Y121y
    26SUB58:90Z122z
    27ESC59;91[123{
    28FS60<92/124|
    29GS61=93]125}
    30RS62>94^126`
    31US63?95_127DEL

    ASCII 码大致由以下两部分组成:

    • ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。

    • ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。

    3.5 转义字符

    作用:用于表示一些不能显示出来的ASCII字符

    现阶段我们常用的转义字符有:\n \\ \t

    转义字符含义ASCII码值(十进制)
    \a警报007
    \b退格(BS) ,将当前位置移到前一列008
    \f换页(FF),将当前位置移到下页开头012
    \n换行(LF) ,将当前位置移到下一行开头010
    \r回车(CR) ,将当前位置移到本行开头013
    \t水平制表(HT) (跳到下一个TAB位置)009
    \v垂直制表(VT)011
    \\代表一个反斜线字符""092
    '代表一个单引号(撇号)字符039
    "代表一个双引号字符034
    \?代表一个问号063
    \0数字0000
    \ddd8进制转义字符,d范围0~73位8进制
    \xhh16进制转义字符,h范围09,af,A~F3位16进制

    示例:

    1. int main() {
    2. cout << "\\" << endl;
    3. cout << "\tHello" << endl;
    4. cout << "\n" << endl;
    5. system("pause");
    6. return 0;
    7. }

    3.6 字符串型

    作用:用于表示一串字符

    两种风格

    1. C风格字符串char 变量名[] = "字符串值"

      示例:

      1. int main() {
      2. char str1[] = "hello world";
      3. cout << str1 << endl;
      4.    
      5. system("pause");
      6. return 0;
      7. }

    注意:C风格的字符串要用双引号括起来

    1. C++风格字符串string 变量名 = "字符串值"

      示例:

      1. int main() {
      2. string str = "hello world";
      3. cout << str << endl;
      4. system("pause");
      5. return 0;
      6. }

    注意:C++风格字符串,需要加入头文件#include

    3.7 布尔类型 bool

    作用:布尔数据类型代表真或假的值

    bool类型只有两个值:

    • true --- 真(本质是1)

    • false --- 假(本质是0)

    bool类型占1个字节大小

    示例:

    1. int main() {
    2. bool flag = true;
    3. cout << flag << endl; // 1
    4. flag = false;
    5. cout << flag << endl; // 0
    6. cout << "size of bool = " << sizeof(bool) << endl; //1
    7. system("pause");
    8. return 0;
    9. }

    4.数据的输入与输出

    4.1 格式输入函数scanf

    scanf 函数是一个用于输入的标准 C 函数,可以在 C++ 中使用,但在 C++ 中通常不推荐使用它,因为它不提供类型安全性和异常处理,容易引发潜在的安全问题。C++ 提供了更安全、更灵活的输入方法,通常使用 cin 对象来完成。 

    以下是一个使用 scanf 函数的示例:

    1. #include
    2. int main() {
    3. int num;
    4. printf("输入一个整数: ");
    5. scanf("%d", &num);
    6. printf("你输入的整数是: %d\n", num);
    7. double value;
    8. printf("输入一个浮点数: ");
    9. scanf("%lf", &value);
    10. printf("你输入的浮点数是: %.2f\n", value);
    11. return 0;
    12. }

     在这个示例中,scanf 函数使用格式控制符(如 "%d""%lf") 来指定输入的数据类型,并使用 & 符号来获取变量的地址。与 printf 类似,scanf 也需要手动处理输入的格式,这可能会导致输入错误或溢出。

    4.2 格式输出函数printf

    printf 函数通常是与 C 语言相关的,而不是 C++。虽然在 C++ 中也可以使用 printf,但推荐使用 C++ 的 iostream 库中的 cout 来进行输出,因为它更符合 C++ 的面向对象编程风格。如果你非常需要使用 printf,你需要包含 头文件。 

    1. #include
    2. int main() {
    3. int num = 42;
    4. printf("整数: %d\n", num);
    5. double value = 3.14159;
    6. printf("浮点数: %.2f\n", value);
    7. const char* text = "Hello, World!";
    8. printf("字符串: %s\n", text);
    9. char character = 'A';
    10. printf("字符: %c\n", character);
    11. return 0;
    12. }

    printf 中,格式控制符(如 %d%.2f%s%c)用于指定输出的数据类型和格式。cout 不同,printf 不会自动添加换行符,你需要在格式字符串中显式包含 "\n" 来实现换行。 

    请注意,虽然 printf 在 C++ 中可用,但它不提供类型安全性,因此容易引发潜在的错误。C++ 的 iostream 库提供了更安全、更灵活和更符合现代 C++ 编程风格的方式来进行输入输出操作,因此通常更适合 C++ 编程。

    4.3 标准输出输入流

    cin相当于键盘,称为标准输入流;cout相当于显示器,称标准输出流;

    endl是向流的末尾部加入换行符;

    4.3.1 使用 cin 对象

    cin 是C++标准库中的输入流对象,通常用于从标准输入设备(键盘)读取用户输入。你可以使用 >> 运算符来从 cin 中读取不同的数据类型,例如整数、浮点数、字符、字符串等。

    作用:用于从键盘获取数据

    关键字:cin

    语法: cin >> 变量

    示例:

    1. #include
    2. using namespace std;
    3. int main() {
    4. //整型输入
    5. int a = 0;
    6. cout << "请输入整型变量:" << endl;
    7. cin >> a;
    8. cout << "刚才输入的整型变量是:" << a << endl;
    9. //浮点型输入
    10. double d = 0;
    11. cout << "请输入浮点型变量:" << endl;
    12. cin >> d;
    13. cout << "刚才输入的浮点型变量:" << d << endl;
    14. //字符型输入
    15. char ch = 0;
    16. cout << "请输入字符型变量:" << endl;
    17. cin >> ch;
    18. cout << ch << endl;
    19. //字符串型输入
    20. string str;
    21. cout << "请输入字符串型变量:" << endl;
    22. cin >> str;
    23. cout << str << endl;
    24. //布尔类型输入
    25. bool flag = true;
    26. cout << "请输入布尔型变量:" << endl;
    27. cin >> flag;
    28. cout << flag << endl;
    29. system("pause");
    30. return EXIT_SUCCESS;
    31. }

    4.3.2 使用 getline 函数

    getline 函数用于从输入流中读取一行文本,并存储在字符串中。它允许你读取包含空格的整行文本。下面是一个示例:

    1. #include
    2. using namespace std;
    3. int main() {
    4. string sentence;
    5. cout << "请输入一句话: ";
    6. getline(cin, sentence); // 读取整行文本
    7. cout << "你输入的句子是: " << sentence << endl;
    8. return 0;
    9. }

    getline 函数需要两个参数:输入流对象和一个字符串,它会读取一行文本,包括换行符,存储在给定的字符串中。 

    4.3.3 标准输出方式

    cout 是C++标准库中的输出流对象,通常用于向标准输出设备(屏幕)输出数据。你可以使用 << 运算符将不同的数据类型输出到 cout 中,例如整数、浮点数、字符、字符串等。

    cout的一般格式为:

    cout<<表达式1<<表达式2<< ....<<表达式n;

    下面是一个示例:

    1. #include
    2. using namespace std;
    3. int main() {
    4. int num = 42;
    5. cout << "整数: " << num << endl;
    6. double value = 3.14159;
    7. cout << "浮点数: " << fixed << value << endl;
    8. char character = 'A';
    9. cout << "字符: " << character << endl;
    10. string text = "Hello, World!";
    11. cout << "字符串: " << text << endl;
    12. return 0;
    13. }

     可以写成多个cout语句:

    1. #include
    2. using namespace std;
    3. int main() {
    4. string text = "Hello, World!";
    5. cout << "字符串: ";
    6. cout << "Hello ";
    7. cout << " ";
    8. cout << "World! ";
    9. cout << endl;
    10. return 0;
    11. }

    4.3.4 解释#include

    #include 是C++程序中的一个预处理指令(preprocessor directive),它用于包含标准输入输出流的头文件,即 标准库。这个头文件中包含了用于输入和输出的各种类和函数,其中最常见的是 cincout

    具体作用如下:

    1. 提供输入输出功能:包含 头文件后,你可以使用 cin 对象来接收用户输入,以及使用 cout 对象来输出结果到标准输出设备(通常是屏幕)。

    2. 方便使用标准输入输出流:这个头文件定义了用于输入和输出的类、函数和运算符重载,使得你能够以一种更便捷的方式进行输入输出。

    3. 提供类型安全性: 头文件中的输入输出操作是类型安全的,这意味着它们会自动适应不同的数据类型,并在编译时检查类型匹配,减少了类型相关的错误。

    4.3.5 using namespace std;的作用

    using namespace std; 是C++中的一个命名空间指令,它的作用是简化代码中的标准命名空间 std 的使用,使得你可以直接访问 std 命名空间中定义的标识符,而无需在每次使用它们时写明 std:: 前缀。

    标准C++库中的大部分标识符(包括 cincoutstring 等)都被定义在 std 命名空间中。如果不使用 using namespace std;,你需要在每次使用这些标识符时显式指定命名空间,例如 std::coutstd::string

    以下是示例,展示了使用和不使用 using namespace std; 的区别:

    使用 using namespace std;

    1. #include
    2. using namespace std;
    3. int main() {
    4. int num;
    5. cout << "请输入一个整数: ";
    6. cin >> num;
    7. cout << "你输入的整数是: " << num << endl;
    8. return 0;
    9. }

    不使用 using namespace std;

    1. #include
    2. int main() {
    3. int num;
    4. std::cout << "请输入一个整数: ";
    5. std::cin >> num;
    6. std::cout << "你输入的整数是: " << num << std::endl;
    7. return 0;
    8. }

    使用 using namespace std; 使代码更简洁,但也可能引发命名冲突,尤其当你的代码与其他库或命名空间中的标识符发生冲突时。因此,一些程序员更喜欢显式指定命名空间,以避免潜在的冲突。

    5.流操作的控制

    5.1 头文件说明:#include

    #include 是C++标准库中的头文件,它提供了一组用于格式化输入输出的工具和控制符。这个头文件允许你对输出进行更精细的格式化控制,包括字段宽度、小数位数、对齐、填充等,特别适用于控制输出的外观。

    以下是一些 #include 头文件中提供的常用控制符和函数:

    1. setw(int width):设置字段宽度。这个控制符用于指定输出字段的最小宽度。如果输出的内容不够宽度,将使用填充字符进行填充。例如,cout << setw(5) << 42; 将输出 " 42",其中字段宽度为5。

    2. setprecision(int n):设置浮点数的小数点后位数。这个控制符用于指定浮点数的小数部分要显示的位数。例如,cout << fixed << setprecision(2) << 3.14159; 将输出 "3.14"。

    3. leftright:这些控制符用于控制文本的对齐方式。left 使文本左对齐,而 right 使文本右对齐。

    例如:

    1. cout << left << setw(10) << "左对齐";
    2. cout << right << setw(10) << "右对齐";

    setfill(char fillchar):设置填充字符。这个控制符用于指定在字段宽度未达到时要使用的填充字符。默认情况下,填充字符是空格。

    例如:

    cout << setfill('*') << setw(10) << 42; // 输出 "********42"
    

    头文件提供了更多控制符和函数,用于满足不同的输出格式需求。它对于需要精确控制输出格式的情况非常有用,如生成表格、报表、货币格式等。

    5.2 格式控制符 

    常见的格式控制符包括:

    • setw(int width):设置字段宽度。
    • setprecision(int n):设置浮点数的小数点后位数。
    • left:左对齐输出。
    • right:右对齐输出。
    • fixed:固定小数点表示浮点数。
    • scientific:科学计数法表示浮点数。

    例如;

    1. #include
    2. #include
    3. using namespace std;
    4. int main() {
    5. double value = 3.14159;
    6. cout << "浮点数: " << fixed << setprecision(2) << value << endl;
    7. return 0;
    8. }

    5.3 控制符

    C++提供了一些控制符,如 endl(用于输出换行符)和 flush(用于刷新输出缓冲区),用于控制输出的行为。

    例如:

    1. #include
    2. using namespace std;
    3. int main() {
    4. cout << "这是一行文本" << endl;
    5. cout << "这是另一行文本" << flush;
    6. return 0;
    7. }

  • 相关阅读:
    jprofiler使用
    栈——火车进出栈问题(卡特兰数,组合计数+高精度乘法+筛质数+求n的阶乘里的质因数次数(模板))
    python作图
    Quartz任务调度
    基于javaweb的个人投资理财系统(java+springboot+layui+html+mysql)
    为什么在pycharm里的全国热力图没有数值
    Cascade R-CNN详解
    JS数组中every, some, filter, map方法
    计算机网络概述
    操作系统学习笔记(V):设备管理
  • 原文地址:https://blog.csdn.net/m0_55196097/article/details/133975195