qidao123.com技术社区-IT企服评测·应用市场

标题: 黑马步伐员c++2024版笔记 第一章 变量和基本类型 [打印本页]

作者: 风雨同行    时间: 昨天 01:38
标题: 黑马步伐员c++2024版笔记 第一章 变量和基本类型
目次
1.字面常量
2.标识符和关键字
起名的限定规则
3.符号常量
界说语法
4.变量的基础使用
1.变量的声明
2.变量的赋值
5.变量的特性
6.变量的快速界说
7.标识符的命名规范
8.标识符的限制规则
9.数据类型-整型
sizeof()函数
10.无符号和有符号数
11.数据类型-实型
12.c++常量类型的确定
13.数据类型-char类型
14.转义字符
15.数据类型之字符串
16.字符串的拼接
17.数据类型之布尔型
18.cin数据输入
19.cin中文乱码解决
20.算术运算符
21.赋值运算符 “=”
22.比较运算符
C语言风格字符串
C++风格字符串
23.逻辑运算符
24.三元运算符
训练:买不买糖


1.字面常量

常量:在步伐实行过程中值不会改变的量。
常量分为字面常量和符号常量。字面常量是被书写到代码内的常量,也称字面量

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     //整型、实型、字符、字符串
  5.     //整型(整数)
  6.     21;
  7.     //实型(小数)
  8.     180.5;
  9.     //字符,''进行包围,单个字符
  10.     'c';    //  只能是一个字符,不能多个也不能0个
  11.     //字符串 ""进行包围,任意个字符
  12.     ""; //空字符串
  13.     "c"; //单个字符
  14.     "hello"; //多个字符
  15.     //通过cout将这些内容全部打印到控制台上
  16.     cout << 21 << endl;//ctrl+d复制该行
  17.     cout << 180.5 << endl;
  18.     cout << 'c' << endl;
  19.     cout << "hello" << endl;
  20.     return 0;
  21. }
复制代码
输出: 
  1. 21
  2. 180.5
  3. c
  4. hello
复制代码
2.标识符和关键字

在c++代码中会涉及到很多命名的场景,比如变量的命名以及后续学习的类、函数等命名。这些命名我们统一称之为:标识符,即表示某类实体的符号(名称)。

起名的限定规则


3.符号常量

符号常量:使用标识符去界说的常量。
简单来说,符号常量是给常量起一个名字。
界说语法

  1. #define 标识符(名称) 常量
复制代码

符号常量的界说不需要分号结尾。使用符号常量直接用它的名字即可。
  1. #include <iostream>
  2. using namespace std;
  3. #define FAT_BMI 28
  4. #define J2C_RATE 4.19
  5. int main() {
  6.     //使用符号常量示例
  7.     cout << FAT_BMI << endl;
  8.     cout << "焦耳转卡路里需要除以: " << J2C_RATE << endl;
  9.     return 0;
  10. }
复制代码
 代码编写没有问题,但是输出出现了中文乱码
  1. 28
  2. 鐒﹁€宠浆鍗¤矾閲岄渶瑕侀櫎浠ワ細 4.19
复制代码
解决方式有2种:
1. 引入Windows.h库,并参加一句固定写法SetConsoleOutputCP(CP_UTF8);
  1. #include <iostream>
  2. #include <Windows.h>
  3. using namespace std;
  4. #define FAT_BMI 28
  5. #define J2C_RATE 4.19
  6. int main() {
  7.     SetConsoleOutputCP(CP_UTF8);    // 设置控制台输出的字符编码
  8.     //使用符号常量示例
  9.     cout << FAT_BMI << endl;
  10.     cout << "焦耳转卡路里需要除以: " << J2C_RATE << endl;
  11.     return 0;
  12. }
复制代码
2. system("chcp 65001");(较方便,但是会额外输出内容)
  1. #include <iostream>
  2. // #include <Windows.h>
  3. using namespace std;
  4. #define FAT_BMI 28
  5. #define J2C_RATE 4.19
  6. int main() {
  7.     system("chcp 65001");
  8.     // SetConsoleOutputCP(CP_UTF8);    // 设置控制台输出的字符编码
  9.     //使用符号常量示例
  10.     cout << FAT_BMI << endl;
  11.     cout << "焦耳转卡路里需要除以: " << J2C_RATE << endl;
  12.     return 0;
  13. }
复制代码
输出
  1. Active code page: 65001
  2. 28
  3. 焦耳转卡路里需要除以: 4.19
复制代码
4.变量的基础使用

变量:在步伐运行时能存储计算结果或表示值的抽象概念。也就是步伐运行时记录数据。
1.变量的声明

  1. 语法:变量类型 变量名;
  2. 示例:int num;
复制代码
 变量名也是标识符,需要符合标识符命名规则,且建议使用小写字母(区分符号常量)
2.变量的赋值

  1. 语法:变量名=变量值;
  2. 示例:num = 10;
复制代码
5.变量的特性

变量存储数据,是可以发生改变的,只需要再一次赋值即可。
  1. bmi = 30;
  2. bmi = = bmi - 2;
复制代码
6.变量的快速界说

除了基本的:先声明(界说)后赋值的变量应用外,变量还支持多种快捷的使用形式。
快捷方式1:变量的声明和赋值同时进行:
  1. int num = 10;
  2. string name = "Jay Chow";
复制代码
快捷方式2:一次性声明多个变量:
  1. int a, b, c;
  2. a = 10;
  3. b = 20;
  4. c = 30;
复制代码
快捷方式3:一次进行多个变量的声明并同时赋值:
  1. int a = 10, b = 20, c = 30;
复制代码
7.标识符的命名规范

符号常量:满足标识符的硬性要求下,若使用英笔墨母,应全部大写。
变量:满足标识符的硬性要求下,如果使用英笔墨母,不应全部大写(可大小写组合或纯小写)。
 通用规范要求:
  1. string studentName = "小明";
  2. string teacherName = "王老师";
复制代码
        小驼峰命名法一样平常用于变量、函数、方法命名。        
        4.大驼峰法:每个单词的首字母都大写
  1. string StudentName = "小明";
  2. string TeacherName = "王老师";
复制代码
        大驼峰命名法一样平常用于类命名。 
8.标识符的限制规则

目前打仗到的标识符:符号常量名、变量名。
除此之外还有:类名称、文件名、方法/函数名等。
标识符的使用限制分为硬性规则和软性规范
硬性规则
9.数据类型-整型

在C++中,整型除了有int,还有下面几种表现形式:
数据类型占用空间取值范围取值范围(科学计数)
short(短整型)2byte-32768~32767-2^15~2^15-1
int(整型)4byte-2147483648~214743647-2^31~2^31-1
long(长整型)Windows为4字节,Linux为字节,8字节4字节范围同上,8字节范围同下4字节范围同上,8字节范围同下
long long(长长整型)8字节-9,223,372,036,854,775,808 ~9,223,372,036,854,775,807-2^63~2^63-1
sizeof()函数

通过在sizeof()函数括号传入数据,就可以提供数据具体占多少字节。
  1. long long a = 233;
  2. cout << sizeof(a) << endl;
复制代码
10.无符号和有符号数

在c++中,数字是有符号和无符号之分的。有符号:可以允许负数存在;无符号:仅允许正数存在。

[]表示可选,可写可不写。如signed int == int。
取值范围规则(n表示位数):
        有符号:-2^(n-1)~2^(n-1)-1
        无符号:0~2^n-1
  1. #include <iostream>
  2. #include <Windows.h>
  3. using namespace std;
  4. int main() {
  5.     SetConsoleOutputCP(CP_UTF8);
  6.     // 有符号 signed(可选) 无符号unsigned(必选)
  7.     signed int num1 = 10;
  8.     int unm2 = 20;
  9.     unsigned int num3 = 30; //无符号的数字必须大于等于0
  10.     cout << num1 << endl;
  11.     cout << unm2 << endl;
  12.     cout << num3 << endl;
  13.     return 0;
  14. }
复制代码
 无符号数的快捷写法:
  1.     //无符号的int、short、long有快捷写法
  2.     u_short num4 = 40;
  3.     u_long num5 = 50;
  4.     u_int num6 = 60;
复制代码
11.数据类型-实型

在c++中,实型有float、double、long double

实型数据没有signed和unsigned之分,全部都是有符号的。
有效位数包含整数、小数点、小数

12.c++常量类型的确定


在C++中,常量是可以有后缀的,具有差别的功能,如:
  1. 10L;    //指定为long类型
  2. 123UL;    //指定为unsigned long类型
复制代码

 不带后缀时,整数默认最小类型为int,小数默以为double。有时候double会浪费空间,例如变量为3.1,这时可以使用后缀3.14f使其为float类型。
13.数据类型-char类型

char表示字符类型,同时支持有符号和无符号。

取值范围是整数范围:char类型本质是数字,即在内存中存储的实际上是数字。数字存储通过ASCII表和字符一一对照。char无法存储中文。
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. int main() {
  5.     SetConsoleOutputCP(CP_UTF8);
  6.    
  7.     char a = 97;    //不添加单引号时char的值
  8.     cout << a << endl;
  9.     return 0;
  10. }
复制代码
 输出为 a
  1.     char b = 'a';
  2.     cout << b + 1 << endl;
复制代码
输出:98 
缘故原由:当前的写法按照数字进行格式化
  1. char c = 'a' + 3;
  2. cout << c << endl;
复制代码
 输出:d
14.转义字符

ASCII码表中的字符分为非打印控制字符和打印字符2类。
非打印控制字符:无法打印出形态,但是可以用于表示各种控制功能,如换行、制表等。
使用非打印字符可以通过“转义字符”的形式:

  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. int main() {
  5.     SetConsoleOutputCP(CP_UTF8);
  6.     //转义字符练习
  7.     cout << "你好呀 \n 我喜欢你" << endl;
  8.     cout << "---------------------------" << endl;
  9.     // 制表符\t 效果等同于键盘的tab键,一个\t可以补充8个字符位
  10.     cout << "Hello\titheima" << endl;
  11.     cout << "a\titcast" << endl;
  12.     cout << "---------------------------" << endl;
  13.     cout << "\" << endl;
  14.     cout << """ << endl;
  15.     return 0;
  16. }
复制代码
输出:
  1. 你好呀
  2. 我喜欢你
  3. ---------------------------
  4. Hello   itheima
  5. a       itcast
  6. ---------------------------
  7. \
  8. "
复制代码
15.数据类型之字符串

c++有2种字符串使用形式:

  1. char a[] = "itheima";    //字符数组形式
  2. char *b = "itcast";    //指针形式
复制代码

  1. string c = "c++";
复制代码
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. int main() {
  5.     SetConsoleOutputCP(CP_UTF8);
  6.     //C语言风格的字符串
  7.     char *str = "你好";
  8.     char str2[] = "你好";
  9.     //C++语言风格的字符串
  10.     string str3 = "你好";
  11.     //输出
  12.     cout << str << endl;
  13.     cout << str2 << endl;
  14.     cout << str3 << endl;
  15.     return 0;
  16. }
复制代码
  1. char s1[] = "itheima";
复制代码
 使用s1风格界说的字符串是只读的,无法再修改。
16.字符串的拼接

拼接操作使用+号进行连接。
  1. string major = "物理";
  2. string class name = "一班";
  3. string msg = "我的专业是" + major + ",我来自" + class;
复制代码
加号仅适用于字符串之间的连接,对于非字符串(如数字),需要将内容转换为字符串。
可以使用c++内置类型to_string()函数将内容转换为字符串形式。 
17.数据类型之布尔型

布尔型(bool)的字面形式分为真(true)和假(false)。它的重要作用是流程控制。
18.cin数据输入

格式
  1. 数据类型 变量;    //声明变量
  2. cin >> 变量;    //输入的数据提供给变量
复制代码
19.cin中文乱码解决

如果实行使用cin读取中文会出现中文无法辨认,解决如下:
1.按住ctrl+shift+alt+/,选择registry注册表
2.取消选择run.processes.with.pty

运行结果就恢复正常了
  1. ===== 个人信息 =====
  2. 姓名:测试
  3. 年龄:111岁
复制代码
 修改该选项后,cout中文也不需要添加额外的语句了。
20.算术运算符

运算符是一种符号,告诉编译器实行特定的数学或逻辑操作。


  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     // 单目运算符:+(正号)、-(负号)
  5.     int num1 = +10;    // 正数
  6.     int num2 = -10;    // 负数
  7.     cout << "单目运算符示例:" << endl;
  8.     cout << "+10 = " << num1 << ", -10 = " << num2 << endl << endl;
  9.     // 双目运算符:+、-、*、/、%
  10.     cout << "双目运算符示例:" << endl;
  11.     cout << "5 + 5 = " << 5 + 5 << endl;
  12.     cout << "5 - 3 = " << 5 - 3 << endl;
  13.     cout << "5 * 5 = " << 5 * 5 << endl;
  14.     cout << "10 / 3 = " << 10 / 3 << " (整数除法舍去小数)" << endl;
  15.     cout << "10 % 3 = " << 10 % 3 << " (取余运算)" << endl << endl;
  16.     // 自增/自减:前置与后置的区别
  17.     int a = 5, b = 5;
  18.     int c = ++a;  // 执行赋值语句(=)前,先对a自增(a=6),再将a的值赋给c(c=6)
  19.     int d = b++;  // 执行赋值语句(=)前,先取b的当前值赋给d(d=5),再对b自增(b=6)
  20.     int x = 8, y = 8;
  21.     int z = --x;  // 执行赋值语句(=)前,先对x自减(x=7),再将x的值赋给z(z=7)
  22.     int w = y--;  // 执行赋值语句(=)前,先取y的当前值赋给w(w=8),再对y自减(y=7)
  23.     cout << "自增/自减运算符示例:" << endl;
  24.     cout << "前置自增 (++a):" << endl;
  25.     cout << "  a = " << a << ", c = " << c << " (先自增,后赋值)" << endl;
  26.    
  27.     cout << "后置自增 (b++):" << endl;
  28.     cout << "  b = " << b << ", d = " << d << " (先赋值,后自增)" << endl;
  29.    
  30.     cout << "前置自减 (--x):" << endl;
  31.     cout << "  x = " << x << ", z = " << z << " (先自减,后赋值)" << endl;
  32.    
  33.     cout << "后置自减 (y--):" << endl;
  34.     cout << "  y = " << y << ", w = " << w << " (先赋值,后自减)" << endl;
  35.     return 0;
  36. }
复制代码
21.赋值运算符 “=”

赋值运算符是一种双目运算符,用于将右侧表达式的值赋予左侧变量。

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     // 初始化变量
  6.     int num = 2;
  7.     cout << "初始值: " << num << endl;
  8.     // 基本赋值运算符 =
  9.     num = num + 3;
  10.     cout << "使用 num = num + 3 后: " << num << endl;
  11.     // += 运算符
  12.     num += 3;  // 等价于 num = num + 3
  13.     cout << "使用 num += 3 后: " << num << endl;
  14.     // -= 运算符
  15.     num -= 2;  // 等价于 num = num - 2
  16.     cout << "使用 num -= 2 后: " << num << endl;
  17.     // *= 运算符
  18.     num *= 2;  // 等价于 num = num * 2
  19.     cout << "使用 num *= 2 后: " << num << endl;
  20.     // /= 运算符
  21.     num /= 3;  // 等价于 num = num / 3
  22.     cout << "使用 num /= 3 后: " << num << endl;
  23.     // %= 运算符
  24.     num %= 2;  // 等价于 num = num % 2
  25.     cout << "使用 num %= 2 后: " << num << endl;
  26.     return 0;
  27. }
复制代码
输出:
  1. 初始值: 2
  2. 使用 num = num + 3 后: 5
  3. 使用 num += 3 后: 8
  4. 使用 num -= 2 后: 6
  5. 使用 num *= 2 后: 12
  6. 使用 num /= 3 后: 4
  7. 使用 num %= 2 后: 0
复制代码
22.比较运算符

比较运算符是双目运算符,对两个数进行比较并得到lbool型结果。

C语言风格字符串

如果使用运算符进行比较,是对比内存地点而非内容
所以需要使用C语言函数strcmp进行比较
  1. #include<cstring>
  2. int result = strcmp(s1,s2);
复制代码
结果分为-1(s1<s2),0(s1=s2),1(s1>s2)三种
C++风格字符串

进行对比的两个字符串至少有一个要是string类型即可使用运算符C++对string类型到场的运算符进行了重载,确保可以正常比较。
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. int main()
  5. {
  6.     // 比较运算符:
  7.     // == 等于   != 不等于   < 小于   > 大于   <= 小于等于   >= 大于等于
  8.     // 0 表示 false(假),1 表示 true(真)
  9.     int num1 = 5;
  10.     int num2 = 5;
  11.     bool r1 = (num1 == num2); // 判断是否相等
  12.     bool r2 = (num1 != num2); // 判断是否不等
  13.     cout << "num1 == num2 : " << r1 << endl; // 修正:"+=" 改为 "=="
  14.     cout << "num1 != num2 : " << r2 << endl;
  15.     // 比较运算必须加括号,因为 << 优先级高于 <、> 等运算符
  16.     cout << "3 < 5 : " << (3 < 5) << endl;  // 正确写法:先计算 3<5,再输出
  17.     cout << "3 > 5 : " << (3 > 5) << endl;
  18.     cout << "3 <= 5 : " << (3 <= 5) << endl;
  19.     cout << "3 >= 5 : " << (3 >= 5) << endl;
  20.     // 字符串的比较
  21.     // C语言风格的字符串比较 char a[]  char *str
  22.     // 直接用比较运算符是将内存地址进行对比,得到的结果为0(假)
  23.     char a[] = "hello";
  24.     char *str = "hello";
  25.     cout << "a == str : " << (a == str) << endl;
  26.     // strcmp进行比较
  27.     cout << "a == str : " << strcmp(a,str) << endl; // 正确写法:"==
  28.     // 字面量型进行比较
  29.     cout << "字面量c是否大于a: " << ('c' > 'a') << endl; // 正确写法:( 'c' > 'a'
  30.     // C++风格的字符串比较 string a
  31.     string b = "hello"; //c++风格
  32.     char c[] = "hello"; //c风格
  33.     cout <<"b == c : " << (b == c) << endl;
  34.     return 0;
  35. }
复制代码
输出:
  1. num1 == num2 : 1
  2. num1 != num2 : 0
  3. 3 < 5 : 1
  4. 3 > 5 : 0
  5. 3 <= 5 : 1
  6. 3 >= 5 : 0
  7. a == str : 0
  8. a == str : 0
  9. 字面量c是否大于a: 1
  10. b == c : 1
复制代码
23.逻辑运算符

逻辑运算符是单/双目运算符,对单/多个表达式进行逻辑判定。

逻辑运算符常用在逻辑判定语句中。这部门代码较简单,且以后会在选择循环布局涉及到,因此为整理示例代码。
24.三元运算符

用于对逻辑进行判定,根据判定结果提供差别值。
  1. 产出bool结果的表达式 ? 值1 : 值2;
复制代码
 其含义为:如果表达式的结果为true,那么提供值为1的结果;如果为false,那么提供值2的结果。示例:
  1. int num1, num2;
  2. cin >> num1;
  3. cin >> num2;
  4. string value = num1 > num2 ? "A" : "B";
  5. cout << value << endl;
复制代码
训练:买不买糖


-
  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     int firstScore, secondScore;
  5.     cout << "请输入小明第一次考试的成绩(0-100):" << endl;
  6.     cin >> firstScore;
  7.     cout << "请输入小明第二次考试的成绩(0-100):" << endl;
  8.     cin >> secondScore;
  9.     cout << "对小明的考试成绩进行判断,结果是:"
  10.          << (secondScore > firstScore ? "买糖" : "不买糖") << endl;
  11.     return 0;
  12. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4