C++ 语法基础

iostream

using namespace std;

ios::sync_with_stdio(0); 
cin.tie(0); 
cout.tie(0);

在开-O2的情况下,

  1. 关同步
  2. 解tie
  3. 不使用endl

这样iostream可以远远快于cstdio

using namespace std;

cin >> x >> y;
cout << x << y << '\n';

cin管道向右,cout管道向左,两者都写在最左边。

预处理命令

宏可以带参数,带参数的宏可以像函数一样使用:

#define sum(x, y) (x + y)

但是注意计算时的括号,否则会引发歧义。

变量

基本数据类型

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void

int类型

可以用关键字进行修饰

类型名 位宽
short int 16
unsigned short int 16
int 32
unsigned int 32
long int 32
unsigned long int 32
long long int 64
unsigned long long int 64
注意:`long`和`int`是一样的!如果需要长长长,那么需要`long long`。

类型转换

数值提升

数值提升时,值不变。(小范围到大范围)

数值转换

数值转换时,值可能改变。

  • 位宽较大的浮点数转换为位宽较小的浮点数,会将该数舍入到目标类型下最接近的值。
  • 浮点数转换为整数时,会舍弃浮点数的全部小数部分。
  • 整数转换为浮点数时,会舍入到目标类型下最接近的值。
  • 将其他类型转换为 bool 类型时,零值转换为 false,非零值转换为 true。

运算

位运算符

运算符 功能
~ 逐位非
& (双目) 逐位与
| 逐位或
^ 逐位异或
<< 逐位左移
>> 逐位右移

注:markdown中需要用\|来表示|

注:位运算符的优先级低于普通的算数运算符。

自增自减运算符

++i:i+=1,返回i

i++:存下i,再把i+=1,返回临时变量

= 与 ==

=为赋值符号,当赋非0时返回True,赋0时返回False

逗号运算符

逗号的作用是将一系列运算按顺序执行。

使用逗号运算符目的是把几个表达式放在一起。

整个逗号表达式的值为系列中最后一个表达式的值。

例:

for(i=1, j=0 ; i<100 && j <300; i++, j*=3)
{
}

成员访问运算符

运算符 功能
[] 数组下标
. 对象成员
& (单目) 取地址/获取引用
* (单目) 间接寻址/解引用
-> 指针成员

流程控制语句

Switch

switch (选择句) {
    case 标签1:
        主体1;
        break;
    case 标签2:
        主体2;
        break;
    default:
        主体3;
}

选择句和标签都必须为整数。

需要定义变量时,必须加花括号。

do while

先执行后判断。

数组

数组声明后长度便不再改变。

数组只能逐值修改,不能整体赋值。(除非用内存操作)

大数组应该尽量定义为全局变量(静态区),局部变量可能爆栈(栈区)。

数组是一个(由编译器管理的)内存地址,角标为偏移量,允许越界访问,甚至允许访问负角标,但是可能产生非法后果。

在 C/C++ 中,直接使用数组名,得到的是数组的起始地址。

心得

最后修改:2021 年 09 月 03 日 01 : 17 AM
如果觉得这篇文章对你有用,请随意赞赏~