登录以参加训练计划
1、从A+B问题认识C++代码结构
#include<iostream>
using namespace std;
int main() {
int a,b;//定义两个整数变量
cin>>a>>b;//输入两个整数
cout<<a+b;//计算两个数的和并输出
return 0;
/*
这里是段落注释,对开发人员可见,对编译器不可见。
*/
}
详细解释上面每一行代码的含义:
(1)、#include<iostream>
C++是一种需要编译的高级语言。这句话是告诉编译器在编译之前将标准头文件的内容插入到当前的源文件中。这样我们就可以在当前文件中使用cin,cout这些功能。不同的系统函数会分布在不同的库,这就像我们外出旅游,需要携带不回的工具包。对于初学者如果需要记忆的较多。我们也可以用万能头#include<bits/stdc++.h>代替一个个include。
(2)、using namespace std;
它的作用是将命名空间中的所有标识符引入到当前作用域。这意味者你可以直接使用std命名空间中的函数,和变量。而不会每次都加上std::前缀。比如你有两个函数都叫jump,一个是在动物命名空间内的,一个是在游戏命名空间内的。如果你想让一个动物跳,你会说“动物 jump”,如果你想在游戏中让角色跳,你会说“游戏角色 jump”。
(3)、int main() {...}
这是主函数。一个程序文件可以有多个函数组成,但一个程序必须有且只有一个主函数,主函数的名字为int main(),int 是返回值,main是函数名,()表示里面的参数为空。无论main()函数在程序的哪个位置,程序都是从main()函数开始执行,main()函数执行完毕,程序也就结束了。因此,我们遇到程序阅读题时,也是要先从main()函数开始看。
(4)注释
行注释(“//”)和段注释(“/* */”),主要是使程序更易于理解,程序编译时,注释部分自动忽略。
(5)关于符号。“#include”,"",";
",",
"(同一行声名多个变量时用逗号分开,后面章节还会遇到很多使用逗号的情况),每一行语句都要用";"号结束,但函数头和“{“、”}”后面不用加分号(struct结构体例外)。
代码从上到下,一行行执行。
2、输入输出
输入:
scanf("%d",&a)
cin>>a
输出:
cout << a
printf("%d",a)
scanf()
和 printf()
int -> %d
整型4
字节long long -> %lld
长整型8
字节double -> %lf
双精度浮点数8
字节 精确计算到小数点后15
位float -> %f
单精度浮点4
字节 精确计算到小数点后6
位char -> %c
字符 跟ASCII
码值有关系。需了解ASCII
当中关键的几个字符值。a
->97
z
->122
A
->65
Z
->90
- ->
32
0
->48
\n
->10
9
->57
bool
只有true
和false
1
字节
3、格式化输出
带小数点的输出:
c语言
输出printf("%.2lf",a)
; // 代表保留小数点后2
位数。a
是double
类型printf("%4d",a)
; // 代表向右对齐4
个空间位置。如果不满足4
个空间左边填充空格。printf("%-4d",a)
; // 代表向左对齐4
个空间位置。如果不满足4
个空间右边填充空格。
c++
语言输出- 需要加头文件:
#include<iomanip>
cout<<fixed<<setprecision(3)<<a<<endl
;//代表保留小数点后3
位数。cout << left << setw(6) << a << endl;
//向左对齐6
个空间cout << setw(6) << a << endl;
//向右对齐6
个空间
- 需要加头文件:
4、数学函数
需要头文件 #include <cmath>或#include<algorithm>两者侧重点不同//如果用万能头#include<bits/stdc++.h>可以不用区分。
b = sqrt(a)
对a数字进行开根号,结果存在b
当中b = pow(c,a)
计算c
的a
次方,赋值给b
b = fabs(a)
求a
的绝对值赋值给b
b = max(a,c)
把a
和c
当中的最大值赋值到b
当中。a c
一定要同样的数值类型b = min(a,c)
把a
和c
当中的最小值赋值到b
当中。a c
一定要同样的数值类型b = ceil(a)
对于a
进行向上取整。b = floor(a)
对于a
进行向下取整。b = round(a)
对a
进行四舍五入操作,遵循‘向远离零的方向舍入’。swap(a,b)
交换a和b
5、数据类型及其转换规则
在C++中,常见的数据类型包括基本类型
和复合类型
。基本类型如整型、浮点型、字符型等,复合类型如数组、结构体、类等。这里主要讨论基本数据类型及其转换规则。
(1) 基本数据类型
1,整型 (Integer Types)
char
: 单个字符,通常占用 1 字节。short
: 短整型,通常占用 2 字节。int
: 标准整型,通常占用 4 字节。long
: 长整型,至少占用 4 字节,但通常也是 4 字节。long long
: 长长整型,至少占用 8 字节。
2,无符号整型 (Unsigned Integer Types)
unsigned char
,unsigned short
,unsigned int
,unsigned long
,unsigned long long
: 与对应的整型相同,但是只能表示非负数。
3. 浮点型 (Floating Point Types)
float
: 单精度浮点型,通常占用 4 字节。double
: 双精度浮点型,通常占用 8 字节。long double
: 扩展精度浮点型,至少占用 8 字节,但实际大小取决于编译器。
4. 字符类型 (Character Types)
char
: 字符类型,通常占用 1 字节。wchar_t
: 宽字符类型,用于表示宽字符,占用字节数根据实现而定。
5. 布尔类型 (Boolean Type)
bool
: 布尔类型,只能表示true
和false
,通常占用 1 字节。
6. 空类型 (Void Type)
void
: 表示没有类型或类型未知。
7. 指针类型 (Pointer Types)
- 指针类型用于存储其他变量的地址。
(2)数据类型转换规则
1. 隐式类型转换 (Implicit Conversion)
- 当不同类型的数据混合使用时,编译器自动将较小的数据类型转换为较大的数据类型。
- 例如,
int + float
会自动将int
转换为float
,然后进行运算。
- 例如,
2. 显式类型转换 (Explicit Conversion)
- 显式类型转换也称为类型强制转换 (Type Casting),需要程序员明确指定。
- 例如,
(double) x
或static_cast<double>(x)
将x
强制转换为double
类型。
- 例如,
3. 窄化转换 (Narrowing Conversion)
- 当从较大的数据类型转换到较小的数据类型时,可能发生信息丢失。
- 例如,将
double
转换为int
时,小数部分将被截断。 - 这种转换通常需要显式进行,以避免编译警告或错误。
- 例如,将
4. 复合赋值运算符 (Compound Assignment Operators)
- 在使用复合赋值运算符(如
+=
、-=
等)时,编译器会对操作数进行适当的类型转换。- 例如,
int i = 1; i += 2.5;
会先将i
转换为double
,执行加法后,再将结果转换回int
。
- 例如,
5. 用户定义的类型转换 (User-Defined Conversions)
- 通过构造函数、转换运算符等可以定义自己的类型转换逻辑。
举个栗子:
下面是一个简单的示例,展示了不同类型之间的转换:
#include <iostream>
int main() {
int i = 10;
double d = 20.5;
char c = 'a';
// 隐式类型转换
double sum = i + d; // i 会自动转换为 double
// 显式类型转换
int result = static_cast<int>(d); // 截断小数部分
// 用户定义的类型转换
class MyClass {
public:
MyClass(int val) : value(val) {}
operator double() const { return static_cast<double>(value); }
private:
int value;
};
MyClass obj(5);
double converted = obj; // obj 被转换为 double
std::cout << "Sum: " << sum << std::endl;
std::cout << "Result: " << result << std::endl;
std::cout << "Converted: " << converted << std::endl;
return 0;
}
这段代码演示了不同类型之间的转换,包括隐式转换、显式转换以及用户定义的转换。
6、变量的命名规则
变量只能由 大小写
字母,数字
,下划线
,组成。
- 不能以数字开头。
- 不能使用关键字定义变量
7、运算简写
a = a + b
同等于 a+=b
a = a - b
同等于 a-=b
a = a * b
同等于 a*=b
a = a / b
同等于 a/=b
a = a % b
同等于 a%=b
,(C++的取余数与数学领域的取余数不同。)
- 参加人数
- 41
- 创建人