1.变量类型
| 变量类型 | bool | char | int | float | double | long long | long double |
|---|---|---|---|---|---|---|---|
| 长度 | 1字节 | 1字节 | 4字节 | 4字节 | 8字节 | 8字节 | 8字节 |
| 范围 | true/false | 'a' | -231 ~ 231-1 且规定1000...0是-231 | 有效数字7-8位 | 有效数字15-16位 | -263 ~ 263-1 | 18-19位 |
常用double,容忍误差const eps = 1e-6;补码存储,有符号数负数取反+1,-1是0xFFFF,正数不变。
2.输入输出
2.1 scanf & printf
- scanf: %c会读入空格(因为空格也是一个字符);%d不会;读string类时要预留空间例如resize(18)
- printf: 默认6位小数; double(%lf),long long(%lld), long double(%llf); 格式化输出%05.2f(补0,右对齐,-5左对齐,2位小数)
2.2 cin & cout
- cin: 不读入空格
- cout
3. 符号
+ - * / %
++ a, b --
+= -=
4. 类型转换
- 隐式转换:低精度->高精度 (int->float; char->int)
- 显式转换:高精度->低精度 (float->int下取整; int->char; float a = b; (char)b )
注意:'a' = 97,'A' = 65, '0' = 48, ' ' = 32
5. 字符数组
- 遇到空格、回车、'\0'为止
- a[4] 的a是指针,可以用a + 1等获取值
- 输入输出:char s[100], string ss
fgets(s, 100, stdin),会读入'\n'getline(cin, ss);cin.getline(s, 100)- cin>>q是不含空格的,cin>>q+1从下标q[1]开始
6. 字符串函数
strlen(s):不包括'\0'strcmp(s1,s2):输出-1 0 1,按字典序strcpy(s2, s1)
7.标准库类型string
- 定义:
s = 'h';s(10,'c') - 输入输出:
getline(cin, ss);printf("%s",s1.c_str()) - 函数
s1.empty()s1.size()- >=<
s1.pop_back()s1.substr(起,末+1)s3 = s1 + s2,两个string可以相加,但不能"h" + "!"- 遍历:用i或者for(c:s)
8.数组
- 定义: {}
- 函数
-
memset(a, 0, sizeof a) -
memcpy(b, a, sizeof a) -
a.length
-