10min快速回顾C++语法(一)

简介: 本系列文章旨在短时间内回顾C/C++语法中的重点与易错点,巩固算法竞赛与写题过程中常用的语法知识,精准地解决学过但有遗忘的情况,为算法刷题打下坚实的基础。

C++的语法奠基(一)

⭐写在前面的话:本系列文章旨在短时间内回顾C/C++语法中的重点与易错点,巩固算法竞赛与写题过程中常用的语法知识,精准地解决学过但有遗忘的情况,为算法刷题打下坚实的基础。

一、详解一个标准的程序结构

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello World"<<endl;
    
    return 0;
}

1.1 常见头文件

#include <cstdio>

C标准的IO:里面有两个函数,printf与scanf。

#include <iostream>

cin>>读入; //想象是从cin中拿到变量中去

cout<<输出; //想象是从变量中输出到cout中去

注意:cout在输出浮点数时会默认保留为科学计数法的形式,要想去处这个形式,需要进行强制类型转化。

#include <cmath>

常见的数学函:sqrt(x)等等

1.2 using namespace std;

使用常见的命名空间:常见的库函数都在std这个命名空间里

  • 只要保证在同一个命名空间里没有变量名冲突即可,不同的命名空间中出现冲突是没有关系的。
  • 如果不加这句,那么在下面使用过程中就必须加上std::cout的符号

1.3 return

作为一个程序,最后一定是要返回0,如果不返回0,则代表有问题。

二、语法常识

2.1 变量

2.1.1 变量的类型
类型 关键字 范围
布尔型 bool 0,1
字符型 char -128~127
整形 int $-2^{31}$~$2^{31}-1$
浮点型 float 6~7位有效数字
双浮点型 double 15-16位有效数字
#include <iostream>
using namespace std;
int main()
{
    bool false/true  1Byte;
    char 'a','c','/n'  1Byte;
    //注意,在C++中char型必须用单引号'',单双引号意义不一样
    int a = 1  4Bytes;
    float b= 1.23, C = 1.23e2, d  4Bytes;
    
    //float支持科学计数法
    long long 范围为-2^63 ~2^63-1 8Bytes;
    long long l = 100000000000000LL;
    //末尾LL表示是LL类型的整数
    
    long double 18~19位有效数字
}
2.1.2 Byte与bit

1Byte = 8bits

因此通常说的十兆带宽(10Mb)实际下载速度约为1MB/s

2.1.3 常见变量的IO方式

浮点数的IO

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
    float a, b;
    scanf("%f %f", &a, &b);
    printf("a + b = %.1f \n a * b = %.2f", a + b, a * b);
    //可以预先确定保留几位小数
    double c, d;
    scanf("%f %f", &c, &d);
    printf("c + d = %lf \n c * d = %lf", c + d, c * d);
    //double类型的IO
    
    long long m ,n;
    scanf("%lld %lld", &m, &n);
    printf("m + n = %lld \n m * n = %lld", m + n, m * n);
    
    return 0;
 }

char的IO

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
    float a, b;
    scanf("%c %c", &a, &b);
    //注意%c会读入空格的
    //但是cin不会读入空格
    printf("%c %c\n",a ,b );
    return 0;
 }

summary

常用类型

int %d
char %c
float %f
double %lf
long long %lld

2.2 常见运算

2.2.1 %取模

注意%的取模操作(只能是整数),即取相除之后的余数。这里余数与数学中定义不一样,余数的正负取决于被除数和除数的正负

2.2.2 整数的自增和自减
++a 先增后取值
a++ 先取值后增

简写

b = b + a ---->b += a

b = b % a ---->b %= a

取模时的a不能为0

2.3 变量类型之间的转换

隐形转换:把低精度转换为高精度

强制转换:(类型)变量 就可以

2.4 ASCII常用表

字符 十进制数字
换行 10
空格 32
0 48
A 65
a 97
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
    int t = 97;
    char c = (char)t;
    cout<< c <<endl;
    return 0;
 }
目录
相关文章
|
2月前
|
Java C# C++
C++ 11新特性之语法甜点1
C++ 11新特性之语法甜点1
31 4
|
2月前
|
编译器 C++ 容器
C++ 11新特性之语法甜点2
C++ 11新特性之语法甜点2
30 1
|
2月前
|
存储 算法 编译器
C++ 11新特性之语法甜点4
C++ 11新特性之语法甜点4
28 0
|
2月前
|
安全 C++ 容器
C++ 11新特性之语法甜点3
C++ 11新特性之语法甜点3
35 0
|
3月前
|
编译器 C++ 容器
C++语言的基本语法
想掌握一门编程语言,第一步就是需要熟悉基本的环境,然后就是最重要的语法知识。 C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。 类 - 类可以定义为描述对象行为/状态的模板/蓝图。 方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。 完整关键字
|
4月前
|
Java 编译器 程序员
C++中的语法知识虚继承和虚基类
**C++中的多继承可能导致命名冲突和数据冗余,尤其在菱形继承中。为解决这一问题,C++引入了虚继承(virtual inheritance),确保派生类只保留虚基类的一份实例,消除二义性。虚继承通过`virtual`关键字指定,允许明确访问特定路径上的成员,如`B::m_a`或`C::m_a`。这样,即使基类在继承链中多次出现,也只有一份成员副本,简化了内存布局并避免冲突。虚继承应在需要时提前在继承声明中指定,影响到从虚基类派生的所有后代类。**
|
4月前
|
编译器 C++ 开发者
C++一分钟之-属性(attributes)与属性语法
【7月更文挑战第3天】C++的属性(attributes)自C++11起允许附加编译器指令,如`[[nodiscard]]`和`[[maybe_unused]]`,影响优化和警告。注意属性放置、兼容性和适度使用,以确保代码清晰和可移植。示例展示了如何使用属性来提示编译器处理返回值和未使用变量,以及利用编译器扩展进行自动清理。属性是提升代码质量的工具,但应谨慎使用。
139 13
|
5月前
|
编译器 程序员 C++
C++一分钟之-属性(attributed)与属性语法
【6月更文挑战第28天】C++的属性为代码添加元数据,帮助编译器理解意图。C++11引入属性语法`[[attribute]]`,但支持取决于编译器。常见属性如`nodiscard`提示检查返回值,`maybe_unused`防止未使用警告。问题包括兼容性、过度依赖和误用。使用属性时需谨慎,确保团队共识,适时更新以适应C++新特性。通过示例展示了`nodiscard`和`likely/unlikely`的用法,强调正确使用属性能提升代码质量和性能。
84 13
|
5月前
|
编译器 C语言 C++