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 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
大勇前进2 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu2 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile2 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白802 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙2 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端
盖伦发发2 天前
软件工程SOLID 五大设计原则
后端·软件工程