欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 黑马程序员c++2024版笔记 第一章 变量和基本类型

黑马程序员c++2024版笔记 第一章 变量和基本类型

2025/5/20 3:22:30 来源:https://blog.csdn.net/2501_90434822/article/details/147980090  浏览:    关键词:黑马程序员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.字面常量

常量:在程序执行过程中值不会改变的量。

常量分为字面常量和符号常量。字面常量是被书写到代码内的常量,也称字面量

#include <iostream>
using namespace std;int main() {//整型、实型、字符、字符串//整型(整数)21;//实型(小数)180.5;//字符,''进行包围,单个字符'c';    //  只能是一个字符,不能多个也不能0个//字符串 ""进行包围,任意个字符""; //空字符串"c"; //单个字符"hello"; //多个字符//通过cout将这些内容全部打印到控制台上cout << 21 << endl;//ctrl+d复制该行cout << 180.5 << endl;cout << 'c' << endl;cout << "hello" << endl;return 0;
}

输出: 

21
180.5
c
hello

2.标识符和关键字

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

起名的限定规则

  • 只允许字母、数字、下划线的组合
  • 数字不能开头
  • 不能使用关键字名

3.符号常量

符号常量:使用标识符去定义的常量。

简单来说,符号常量是给常量起一个名字。

定义语法

#define 标识符(名称) 常量
  • #define :宏命令(后续学习) 固定开头
  • 标识符(名称):符号常量的名称,是标识符的一种,字母建议全部大写
  • 常量:常量值
    #define FAT_BMI 28    // 肥胖BMI
    #define J2C_RATE 4.19    // 焦耳和卡路里转换率

符号常量的定义不需要分号结尾。使用符号常量直接用它的名字即可。

#include <iostream>
using namespace std;
#define FAT_BMI 28
#define J2C_RATE 4.19int main() {//使用符号常量示例cout << FAT_BMI << endl;cout << "焦耳转卡路里需要除以: " << J2C_RATE << endl;return 0;
}

 代码编写没有问题,但是输出出现了中文乱码

28
鐒﹁€宠浆鍗¤矾閲岄渶瑕侀櫎浠ワ細 4.19

解决方式有2种:

1. 引入Windows.h库,并加入一句固定写法SetConsoleOutputCP(CP_UTF8);

#include <iostream>
#include <Windows.h>
using namespace std;
#define FAT_BMI 28
#define J2C_RATE 4.19int main() {SetConsoleOutputCP(CP_UTF8);    // 设置控制台输出的字符编码//使用符号常量示例cout << FAT_BMI << endl;cout << "焦耳转卡路里需要除以: " << J2C_RATE << endl;return 0;
}

2. system("chcp 65001");(较方便,但是会额外输出内容)

#include <iostream>
// #include <Windows.h>
using namespace std;
#define FAT_BMI 28
#define J2C_RATE 4.19int main() {system("chcp 65001");// SetConsoleOutputCP(CP_UTF8);    // 设置控制台输出的字符编码//使用符号常量示例cout << FAT_BMI << endl;cout << "焦耳转卡路里需要除以: " << J2C_RATE << endl;return 0;
}

输出

Active code page: 65001
28
焦耳转卡路里需要除以: 4.19

4.变量的基础使用

变量:在程序运行时能存储计算结果或表示值的抽象概念。也就是程序运行时记录数据。

1.变量的声明

语法:变量类型 变量名;
示例:int num;

 变量名也是标识符,需要符合标识符命名规则,且建议使用小写字母(区分符号常量)

2.变量的赋值

语法:变量名=变量值;
示例:num = 10;

5.变量的特征

变量存储数据,是可以发生改变的,只需要再一次赋值即可。

bmi = 30;
bmi = = bmi - 2;

6.变量的快速定义

除了基本的:先声明(定义)后赋值的变量应用外,变量还支持多种快捷的使用形式。

快捷方式1:变量的声明和赋值同时进行:

int num = 10;
string name = "Jay Chow";

快捷方式2:一次性声明多个变量:

int a, b, c;
a = 10;
b = 20;
c = 30;

快捷方式3:一次进行多个变量的声明并同时赋值:

int a = 10, b = 20, c = 30;

7.标识符的命名规范

符号常量:满足标识符的硬性要求下,若使用英文字母,应全部大写。

变量:满足标识符的硬性要求下,如果使用英文字母,不应全部大写(可大小写组合或纯小写)。

 通用规范要求:

  1. 见名知义:标识符的命名应当有具体的含义。
    string name = "小明";
    string a = "小明";
  2. 下划线命名法:当命名标识符的时候,为满足见名知义要求,可能会使用多个单词或数字的组合。为了区别每一个单词,可以用下划线进行区分,这种方式称之为下划线命名法。
    string student_name = "小明";
    string teacher_name = "王老师";

    如果使用该命名法,英文单词可以全部小写。下划线命名法一般用于变量。

  3. 小驼峰法
    1. 大小写首字母进行区分
    2. 简短的单词可以全大写
string studentName = "小明";
string teacherName = "王老师";

        小驼峰命名法一般用于变量、函数、方法命名。        

        4.大驼峰法:每个单词的首字母都大写

string StudentName = "小明";
string TeacherName = "王老师";

        大驼峰命名法一般用于类命名。 

8.标识符的限制规则

目前接触到的标识符:符号常量名、变量名。

除此之外还有:类名称、文件名、方法/函数名等。

标识符的使用限制分为硬性规则和软性规范

硬性规则

  1. 内容限定:仅可使用字母数字下划线,且数字不可开头。
  2. 大小写敏感:大写和小写字母的名称是不同的可区分的。
  3. 不可使用关键字。

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()函数括号传入数据,就可以提供数据具体占多少字节。

long long a = 233;
cout << sizeof(a) << endl;

10.无符号和有符号数

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

[]表示可选,可写可不写。如signed int == int。

取值范围规则(n表示位数):

        有符号:-2^(n-1)~2^(n-1)-1

        无符号:0~2^n-1

#include <iostream>
#include <Windows.h>
using namespace std;int main() {SetConsoleOutputCP(CP_UTF8);// 有符号 signed(可选) 无符号unsigned(必选)signed int num1 = 10;int unm2 = 20;unsigned int num3 = 30; //无符号的数字必须大于等于0cout << num1 << endl;cout << unm2 << endl;cout << num3 << endl;return 0;
}

 无符号数的快捷写法:

    //无符号的int、short、long有快捷写法u_short num4 = 40;u_long num5 = 50;u_int num6 = 60;

11.数据类型-实型

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

实型数据没有signed和unsigned之分,全部都是有符号的。

有效位数包含整数、小数点、小数

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

在C++中,常量是可以有后缀的,具有不同的功能,如:

10L;    //指定为long类型
123UL;    //指定为unsigned long类型

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

13.数据类型-char类型

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

取值范围是整数范围:char类型本质是数字,即在内存中存储的实际上是数字。数字存储通过ASCII表和字符一一对照。char无法存储中文。

#include <iostream>
#include <windows.h>
using namespace std;int main() {SetConsoleOutputCP(CP_UTF8);char a = 97;    //不添加单引号时char的值cout << a << endl;return 0;
}

 输出为 a

    char b = 'a';cout << b + 1 << endl;

输出:98 

原因:当前的写法按照数字进行格式化

char c = 'a' + 3;
cout << c << endl;

 输出:d

14.转义字符

ASCII码表中的字符分为非打印控制字符和打印字符2类。

非打印控制字符:无法打印出形态,但是可以用于表示各种控制功能,如换行、制表等。

使用非打印字符可以通过“转义字符”的形式:

#include <iostream>
#include <windows.h>
using namespace std;int main() {SetConsoleOutputCP(CP_UTF8);//转义字符练习cout << "你好呀 \n 我喜欢你" << endl;cout << "---------------------------" << endl;// 制表符\t 效果等同于键盘的tab键,一个\t可以补充8个字符位cout << "Hello\titheima" << endl;cout << "a\titcast" << endl;cout << "---------------------------" << endl;cout << "\\" << endl;cout << "\"" << endl;return 0;
}

输出:

你好呀我喜欢你
---------------------------
Hello   itheima
a       itcast
---------------------------
\
"

15.数据类型之字符串

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

  • c语言风格(了解)
char a[] = "itheima";    //字符数组形式
char *b = "itcast";    //指针形式
  • c++
string c = "c++";
#include <iostream>
#include <windows.h>
using namespace std;int main() {SetConsoleOutputCP(CP_UTF8);//C语言风格的字符串char *str = "你好";char str2[] = "你好";//C++语言风格的字符串string str3 = "你好";//输出cout << str << endl;cout << str2 << endl;cout << str3 << endl;return 0;
}
char s1[] = "itheima";

 使用s1风格定义的字符串是只读的,无法再修改。

16.字符串的拼接

拼接操作使用+号进行连接。

string major = "物理";
string class name = "一班";string msg = "我的专业是" + major + ",我来自" + class;

加号仅适用于字符串之间的连接,对于非字符串(如数字),需要将内容转换为字符串。

可以使用c++内置类型to_string()函数将内容转换为字符串形式。 

17.数据类型之布尔型

布尔型(bool)的字面形式分为真(true)和假(false)。它的主要作用是流程控制。

18.cin数据输入

格式

数据类型 变量;    //声明变量
cin >> 变量;    //输入的数据提供给变量

19.cin中文乱码解决

如果尝试使用cin读取中文会出现中文无法识别,解决如下:

1.按住ctrl+shift+alt+/,选择registry注册表

2.取消选择run.processes.with.pty

运行结果就恢复正常了

===== 个人信息 =====
姓名:测试
年龄:111岁

 修改该选项后,cout中文也不需要添加额外的语句了。

20.算术运算符

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

  • 前置递增:b=++a,表示先计算a=a+1,再把a赋值给b
  • 后置递增:b=a++,表示先把a的值赋给b,再计算a=a+1
  • 前置递减:b=--a,表示先计算a=a-1,再把a赋值给b
  • 后置递减:b=a-,表示先把a的值赋给b,再计算a=a-1
#include <iostream>
using namespace std;int main() {// 单目运算符:+(正号)、-(负号)int num1 = +10;    // 正数int num2 = -10;    // 负数cout << "单目运算符示例:" << endl;cout << "+10 = " << num1 << ", -10 = " << num2 << endl << endl;// 双目运算符:+、-、*、/、%cout << "双目运算符示例:" << endl;cout << "5 + 5 = " << 5 + 5 << endl;cout << "5 - 3 = " << 5 - 3 << endl;cout << "5 * 5 = " << 5 * 5 << endl;cout << "10 / 3 = " << 10 / 3 << " (整数除法舍去小数)" << endl;cout << "10 % 3 = " << 10 % 3 << " (取余运算)" << endl << endl;// 自增/自减:前置与后置的区别int a = 5, b = 5;int c = ++a;  // 执行赋值语句(=)前,先对a自增(a=6),再将a的值赋给c(c=6)int d = b++;  // 执行赋值语句(=)前,先取b的当前值赋给d(d=5),再对b自增(b=6)int x = 8, y = 8;int z = --x;  // 执行赋值语句(=)前,先对x自减(x=7),再将x的值赋给z(z=7)int w = y--;  // 执行赋值语句(=)前,先取y的当前值赋给w(w=8),再对y自减(y=7)cout << "自增/自减运算符示例:" << endl;cout << "前置自增 (++a):" << endl;cout << "  a = " << a << ", c = " << c << " (先自增,后赋值)" << endl;cout << "后置自增 (b++):" << endl;cout << "  b = " << b << ", d = " << d << " (先赋值,后自增)" << endl;cout << "前置自减 (--x):" << endl;cout << "  x = " << x << ", z = " << z << " (先自减,后赋值)" << endl;cout << "后置自减 (y--):" << endl;cout << "  y = " << y << ", w = " << w << " (先赋值,后自减)" << endl;return 0;
}

21.赋值运算符 “=”

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

#include <iostream>
using namespace std;int main()
{// 初始化变量int num = 2;cout << "初始值: " << num << endl;// 基本赋值运算符 =num = num + 3;cout << "使用 num = num + 3 后: " << num << endl;// += 运算符num += 3;  // 等价于 num = num + 3cout << "使用 num += 3 后: " << num << endl;// -= 运算符num -= 2;  // 等价于 num = num - 2cout << "使用 num -= 2 后: " << num << endl;// *= 运算符num *= 2;  // 等价于 num = num * 2cout << "使用 num *= 2 后: " << num << endl;// /= 运算符num /= 3;  // 等价于 num = num / 3cout << "使用 num /= 3 后: " << num << endl;// %= 运算符num %= 2;  // 等价于 num = num % 2cout << "使用 num %= 2 后: " << num << endl;return 0;
}

输出:

初始值: 2
使用 num = num + 3 后: 5
使用 num += 3 后: 8
使用 num -= 2 后: 6
使用 num *= 2 后: 12
使用 num /= 3 后: 4
使用 num %= 2 后: 0

22.比较运算符

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

C语言风格字符串

如果使用运算符进行比较,是对比内存地址而非内容

所以需要使用C语言函数strcmp进行比较

#include<cstring>
int result = strcmp(s1,s2);

结果分为-1(s1<s2),0(s1=s2),1(s1>s2)三种

C++风格字符串

进行对比的两个字符串至少有一个要是string类型即可使用运算符C++对string类型参与的运算符进行了重载,确保可以正常比较。

#include <iostream>
#include <cstring>
using namespace std;int main()
{// 比较运算符:// == 等于   != 不等于   < 小于   > 大于   <= 小于等于   >= 大于等于// 0 表示 false(假),1 表示 true(真)int num1 = 5;int num2 = 5;bool r1 = (num1 == num2); // 判断是否相等bool r2 = (num1 != num2); // 判断是否不等cout << "num1 == num2 : " << r1 << endl; // 修正:"+=" 改为 "=="cout << "num1 != num2 : " << r2 << endl;// 比较运算必须加括号,因为 << 优先级高于 <、> 等运算符cout << "3 < 5 : " << (3 < 5) << endl;  // 正确写法:先计算 3<5,再输出cout << "3 > 5 : " << (3 > 5) << endl;cout << "3 <= 5 : " << (3 <= 5) << endl;cout << "3 >= 5 : " << (3 >= 5) << endl;// 字符串的比较// C语言风格的字符串比较 char a[]  char *str// 直接用比较运算符是将内存地址进行对比,得到的结果为0(假)char a[] = "hello";char *str = "hello";cout << "a == str : " << (a == str) << endl;// strcmp进行比较cout << "a == str : " << strcmp(a,str) << endl; // 正确写法:"==// 字面量型进行比较cout << "字面量c是否大于a: " << ('c' > 'a') << endl; // 正确写法:( 'c' > 'a'// C++风格的字符串比较 string astring b = "hello"; //c++风格char c[] = "hello"; //c风格cout <<"b == c : " << (b == c) << endl;return 0;
}

输出:

num1 == num2 : 1
num1 != num2 : 0
3 < 5 : 1
3 > 5 : 0
3 <= 5 : 1
3 >= 5 : 0
a == str : 0
a == str : 0
字面量c是否大于a: 1
b == c : 1

23.逻辑运算符

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

逻辑运算符常用在逻辑判断语句中。这部分代码较简单,且以后会在选择循环结构涉及到,因此为整理示例代码。

24.三元运算符

用于对逻辑进行判断,根据判断结果提供不同值。

产出bool结果的表达式 ? 值1 : 值2;

 其含义为:如果表达式的结果为true,那么提供值为1的结果;如果为false,那么提供值2的结果。示例:

int num1, num2;
cin >> num1;
cin >> num2;
string value = num1 > num2 ? "A" : "B";
cout << value << endl;

练习:买不买糖

-

#include <iostream>
using namespace std;int main() {int firstScore, secondScore;cout << "请输入小明第一次考试的成绩(0-100):" << endl;cin >> firstScore;cout << "请输入小明第二次考试的成绩(0-100):" << endl;cin >> secondScore;cout << "对小明的考试成绩进行判断,结果是:"<< (secondScore > firstScore ? "买糖" : "不买糖") << endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词