登录

数据类型

数据类型与输入

基础数据类型

C++ 常用的基本数据类型主要有以下几种:

数据类型

描述

示例

整形 int

所有的整数

int num = 1;

实数型 double

所有的小数

double num = 1.5;

单字符 char

单一字符

char character = 'a';

字符串 string

两个及以上字符

string word = "Hello";

布尔 bool

true 或者 false

bool judge = true;

#include <iostream>
using namespace std;
int main() {
    int num1 = 1;
    double num2 = 1.5;
    char character = 'a';
    bool judge = true;
    string word = &quot;Hello&quot;;
    cout << num1 << endl;
    return 0;
}

标准输入输出

C++语言的标准输入与输出使用的是 cin 和 cout。

cin 是从键盘上读取用户输入的内容。

cout 是输出相应的内容,endl 是换行的意思。

试试以下程序,输入两个数字,然后输出它们的和。(记得现在 stdin 里输入两个数字,以空格隔开或者换行隔开

#include <iostream>
using namespace std;
int main() {
    int num1,num2;
    cin >> num1 >> num2;
    cout << num1 + num2 << endl;
    return 0;
}

数据类型很重要,如果声明的是string类型的变量,再输入两个数字,然后输出它们的和看看。(**记得现在stdin里输入两个数字**)

#include <iostream>

using namespace std;

int main() {

string num1,num2;

cin >> num1 >> num2;

cout << num1 + num2 << endl;

return 0;

}


:: warning 区别
可以看到,int 类型的变量相加就是数学加法,比如 1+2,会得到 3。但是 string 类型的变量相加就是字符拼接,比如'1'+'2',会得到'12',而不是 3。所以声明合适的数据类型非常重要。
::

---

::warning
 拓展内容
后续为拓展内容
::

## 占用内存与范围

| 类型               | 位            | 范围                                                                |
| ------------------ | ------------- | ------------------------------------------------------------------- |
| char               | 1 个字节      | -128 到 127 或者 0 到 255                                           |
| unsigned char      | 1 个字节      | 0 到 255                                                            |
| signed char        | 1 个字节      | -128 到 127                                                         |
| int                | 4 个字节      | -2147483648 到 2147483647                                           |
| unsigned int       | 4 个字节      | 0 到 4294967295                                                     |
| signed int         | 4 个字节      | -2147483648 到 2147483647                                           |
| short int          | 2 个字节      | -32768 到 32767                                                     |
| unsigned short int | 2 个字节      | 0 到 65,535                                                         |
| signed short int   | 2 个字节      | -32768 到 32767                                                     |
| long int           | 8 个字节      | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807             |
| signed long int    | 8 个字节      | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807             |
| unsigned long int  | 8 个字节      | 0 到 18,446,744,073,709,551,615                                     |
| float              | 4 个字节      | 精度型占 4 个字节(32 位)内存空间,+/- 3.4e +/- 38 (~7 个数字)     |
| double             | 8 个字节      | 双精度型占 8 个字节(64 位)内存空间,+/- 1.7e +/- 308 (~15 个数字) |
| long double        | 16 个字节     | 长双精度型 16 个字节(128 位)内存空间,可提供 18-19 位有效数字。   |
| wchar_t            | 2 或 4 个字节 | 1 个宽字符                                                          |

## 类型转换

### 强制转换

强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用**强制类型转换运算符**来把值显式地从一种类型转换为另一种类型,如下所示:

(type_name) expression


请看下面的实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int sum = 17, count = 5;
    double mean;
    mean = (double) sum / count;
    printf(&quot;mean的值是: %f&quot;, mean );
    return 0;
}

隐式转换

常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a = 1;
    double b = 1.2;
    cout<<a + b<<endl; //int类型会自动转换为double类型,算出来是2.2
    cout<<a + (int)b<<endl; //强制转换b为int类型后,才能得到2
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
    char ch = 'a'; // a 的 ASCII 值是 97
    int sum;
    sum = 'a' + ch; // 字符相加会自动转换为整数
    if(ch < 98) // char 可以直接和整数比较
        printf(&quot;sum的值是: %d\\n&quot;, sum );
    printf(&quot;变量ch的字母往右移动3位: %c&quot;, ch + 3);
}

字符串转换

字符串与数字的相互转换

可以使用 to_string()函数,实现数字转字符串。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a = 1;
    float b = 1.2;
    string c = to_string(a) + to_string(b);
    cout<<c<<endl;
}

可以使用 stoi()函数,实现字符串转整数。stod()函数,实现字符串转浮点数。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a = &quot;1&quot;;
    int b = stoi(a) + stoi(a);
    cout<<b<<endl;
    string c = &quot;1.2&quot;;
    double d = stod(c) + stod(c);
    cout<<d<<endl;
}

typedef 自定义数据类型

typedef 是 C 编程中使用的关键字,用于为 C 程序中已经存在的变量提供一些有意义的名称。它的行为类似于我们为命令定义别名。简而言之,我们可以说这个关键字用于重新定义一个已经存在的变量的名称。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll num = 1E10;
    cout<<num<<endl;
}

auto 类型

有时候,可以使用 auto 关键字来自动声明类型。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int nums[3] = {1,2,3};
    for(auto i : nums)
        cout<<i<<endl;
}
登录