C++语法基础(一)

241 阅读1分钟

1.变量类型

变量类型boolcharintfloatdoublelong longlong double
长度1字节1字节4字节4字节8字节8字节8字节
范围true/false'a'-231 ~ 231-1
且规定1000...0是-231
有效数字7-8位有效数字15-16位-263 ~ 263-118-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