Javer 学 c++(三):数据类型篇

总览

本篇主要讲了 c++ 的数据类型,包括整形、浮点型、字符、转义字符、字符串、布尔、输入等

数据类型的作用:给变量分配合适的内存空间

一、整型

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    short a = 10;
    int b = 20;
    long c = 30;
    long long d = 40;

    cout << a << " " << b << " " << c << " " << d << endl;

    return 0;
}

和 Java 相似的形式,同时超出最大值也会发生溢出的问题,重新从最小值开始计数

sizeof 关键字

作用:用来求出数据类型的大小

使用:sizeof(数据类型) or sizeof(数据)

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    short a = 10;
    int b = 20;
    long c = 30;
    long long d = 40;
    // 结果为 2 4 8 8
    cout << sizeof(a) << " " << sizeof(b) << " " << sizeof(c) << " " << sizeof(d) << endl;

    return 0;
}

二、实型(浮点型)

作用:用来表示小数

分类: float 单精度 double 双精度

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    // 单精度
    float pi = 3.14f;
    // 双精度
    double p = 3.14;
    // 结果为 float: 3.14159  double: 3.14159
    cout << "float: " << pi << "  double: " << p << endl;

    return 0;
}

默认小数只显示 5 位,如果需要显示更多,需配置

科学计数法

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    // 单精度
    float f = 3e-2;
    // 结果为 0.03
    cout << "float: " << f << endl;

    return 0;
}

三、字符型

作用:用来显示单个字符

语法: char ch = 'a';

注意一:必须用单引号,不可以是双引号

注意二:引号内必须为单个字符,不能是多个

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    // c++ 中字符型只占一个字节
    char ch = 'a';
    // 并不是把字符本身存到内存单元,而是存 ASCII 码
    cout << "char: " << ch << endl;
    // 结果为 97
    // 记一下 a=97,A=65
    cout << "ASCII: " << (int)ch << endl;
    return 0;
}

为什么 Java 中的 char 占用的两字符,而 c++ 只有一个字符?

如果只表示 ASCII 码的话,Java 也可以用一个,但是由于字符种类的增多,目前国际标准其实已经变为了 UTF-8,已经超出了一个字符能够表示的范围,所以 Java 采用了两字符。

c++ 也可以通过 u8'char' 来表示 utf-8 下的字符

四、转义字符

作用:用来表示一些不能显示的字符,比如空格、回车等

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    // 换行符 \n
    cout << "Hello World\n";

    // 反斜杠 \

    cout << "\" << endl;

    // 水平制表符 \t  对齐效果
    cout << "aaa\tHello World";
    
    // 结果为  Hello World
    //        \
    //        aaa     Hello World

    return 0;
}

五、字符串型

作用:表示字符串

风格一:c风格字符串

c++ 复制代码
#include <iostream>
using namespace std;

int main() {
    // c风格:char 变量名[] = 变量值;
    char str[] = "abcd";

    cout << str << endl;

    return 0;
}

风格二:c++字符串

c++ 复制代码
#include <iostream>
using namespace std;
#include <string>

int main() {
    // c++风格:string 变量名 = 变量值;
    const string str = "abcd";

    cout << str << endl;

    return 0;
}

类比 Java 的话,首字母大小写不同,Java 中字符串为 String,c++ 为 string

六、布尔类型

作用:代表真或假的值

bool 类型只有两个值:

  • true,表示真(本质是 1)
  • flase,表示假(本质是 0)

bool 类型只占 1 字节

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    bool flag = false;
    // 输出 0
    cout << flag << endl;
    // 输出 1,代表只占 1 字节
    cout << sizeof(flag) << endl;

    return 0;
}

Java 中布尔类型为 Boolean,c++ 和 python 相同,为 bool

七、数据的输入

作用:从键盘获取数据

语法:cin >> 变量

c++ 复制代码
#include <iostream>
using namespace std;

int main() {

    double d = 1.5;

    cout << "请给变量 d 赋值:";
    // 键盘输入 100
    cin >> d;
    // 赋值后 d = 100
    cout << "赋值后 d = " << d << endl;

    return 0;
}

输入应该是类比 Java 中的 System.Scanner

Scanner sc = new Scanner(System.in);

int x = sc.nextInt();

相关推荐
小蒜学长2 小时前
汽车专卖店管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·汽车
FSHOW5 小时前
【独立开发日记】MQ端到端类型安全
前端·javascript·后端
柏油5 小时前
MySQL InnoDB 后台线程
数据库·后端·mysql
007php0076 小时前
Go 错误处理:用 panic 取代 err != nil 的模式
java·linux·服务器·后端·ios·golang·xcode
绝无仅有7 小时前
Go 面试题: new 和 make 是什么,差异在哪?
后端·面试·github
绝无仅有7 小时前
go语言面试之Goroutine 数量控制, GC回收 和任务调度
后端·面试·github
C++chaofan8 小时前
Spring Task快速上手
java·jvm·数据库·spring boot·后端·spring·mybatis
星星点点洲10 小时前
【Golang】 项目启动方法
开发语言·后端·golang
抹茶酸奶10 小时前
告别满屏的console.log!教你几种高级JavaScript调试技巧,效率直接拉满
后端