有关C++的数据类型(int,long,short,float,double等等)

看书的时候总结几个方便以后复习:

1、整形:表示整数、字符和布尔值的算数类型的合称;

2、字符类型有两种:char和wchar_t,char类型通常是单个字节,wchar_t类型用于扩展字符集,比如汉字和日语,这些字符集不能用单个char表示;

3、short、int、long类型都表示整形,一般来说(32位机器),short占16位,两字节;int占32位(根据系统而定,32位机下为4个字节),四个字节;long在32位机器上和int一样,也是四个字节(所以感觉C++ Primer中这块的概念有误,1字=2字节 才对

4、默认情况下,int、short、long都是带符号的,即signed;

5、和其他整形不同,char有三种表示方式:普通char、unsigned char、signed char。虽然有三种不同的类型,但是只有两种表示方式。可以使用unsigned char或者signed cahr表示char类型,具体使用哪种方式由编译器而定。

6、整型的赋值:当一个超出范围的值被赋给一个变量时,会怎么赋值呢?答曰:由编译器来决定,但一般都是取该值对该类型取值数目求模后的值(但不能保证所有编译器都会这样处理),e.g. 试图将336存储到8位的unsigned char中,实际赋值为80,因为80是336对256求模后的值,同理,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值;

7、浮点数float、double、long double分别表示单精度、双精度、扩展精度浮点数,一般float为32位,double为64位,long使用96位或者128位。类型的取值范围决定了浮点数所含的有效数字位数,对于实际程序来说,float类型只能保证6位的有效数字,而double类型至少可以保证10位的有效数字。

8、C++的标准并没有规定每种类型占多少位,只是说 “sizeof(long)>=sizeof(int)>=sizeof(short)”,所以具体的字节数都是根据编译器来确定的。

### 数据类型定义与用法 在C和C++编程语言中,`double`、`int`、`short`、`float` 和 `long` 是基本的数据类型,用于存储不同范围和精度的数值。以下是这些数据类型的定义、用法以及区别: #### 1. **`int` 类型** `int` 是一种整数类型,用于存储带符号的整数值。其大小取决于编译器和目标平台,但通常为4字节(32位)。 - 范围:在32位系统上,`int` 的取值范围为 -2,147,483,648 到 2,147,483,647[^3]。 - 用法:适用于一般的整数计算,例如循环计数器或数组索引。 ```c int a = 10; ``` #### 2. **`short` 类型** `short` 是一种较短的整数类型,通常占用2字节(16位)。它主要用于节省内存空间时的整数存储。 - 范围:-32,768 到 32,767[^3]。 - 用法:适合存储较小的整数值。 ```c short b = 500; ``` #### 3. **`long` 类型** `long` 是一种较大的整数类型,通常占用4字节(32位)或更多。在某些平台上,`long` 可能占用8字节(64位)。 - 范围:在32位系统上为 -2,147,483,648 到 2,147,483,647,在64位系统上可能更大[^3]。 - 用法:当需要处理较大的整数值时使用。 ```c long c = 1000000L; ``` #### 4. **`float` 类型** `float` 是一种单精度浮点数类型,通常占用4字节(32位)。它用于存储带有小数部分的数值。 - 范围:大约 ±3.4e±38,精度约为6到7位十进制数字[^1]。 - 用法:适用于对精度要求不高的科学计算或图形处理。 ```c float d = 3.14f; ``` #### 5. **`double` 类型** `double` 是一种双精度浮点数类型,通常占用8字节(64位)。它提供了更高的精度和更大的数值范围。 - 范围:大约 ±1.7e±308,精度约为15到16位十进制数字。 - 用法:适用于需要高精度的科学计算或金融应用。 ```c double e = 2.71828; ``` #### 6. **无符号类型** 每种整数类型都可以声明为无符号类型(`unsigned`),这意味着它们只能存储非负值,但范围会加倍[^4]。 ```c unsigned int f = 4294967295U; // 最大值为 2^32 - 1 ``` ### 数据类型的区别 | 类型 | 大小(字节) | 范围 | 精度 | 用途 | |-----------|--------------|-------------------------------|------------|--------------------------| | `int` | 4 | -2,147,483,648 到 2,147,483,647 | 整数 | 一般整数计算 | | `short` | 2 | -32,768 到 32,767 | 整数 | 小整数存储 | | `long` | 4 或 8 | 平台相关 | 整数 | 大整数计算 | | `float` | 4 | ±3.4e±38 | 约6-7位 | 单精度浮点数 | | `double` | 8 | ±1.7e±308 | 约15-16位 | 双精度浮点数 | ### 示例代码 以下是一个简单的代码示例,展示如何定义和使用这些数据类型: ```c #include <stdio.h> int main() { short s = 32767; int i = 2147483647; long l = 9223372036854775807L; float f = 3.14f; double d = 2.71828; printf("short: %hd\n", s); printf("int: %d\n", i); printf("long: %ld\n", l); printf("float: %.2f\n", f); printf("double: %.5f\n", d); return 0; } ``` ### 隐式类型转换规则 在表达式中,如果操作数的类型不同,编译器会自动进行隐式类型转换以确保运算的一致性。例如,当一个 `int` 和一个 `float` 相加时,`int` 会被转换为 `float`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Garfield2005

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值