欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第三章

程序员文章站 2022-05-07 08:01:54
...

C++基本整型

有5种:

char
short 至少16位
int 至少与short一样长
long 至少32位且至少与int一样长
long long 至少64位且至少与long一样长

内存基本单元为位(bit)组成,一个字节(byte)为8位。
也就是说:
8位单元能表示256个数
16位单元能表示65536个数
32位单元能表示4294672296个数
64位单元能表示18446744073709551616个数

除char外其他四种都是符号类型,也就是正负数能表示各一半。
并且有对应的无符号型变体:

unsigned short
unsigned int 
unsigned long
unsigned long long

无符号型变体是为了舍弃表示负数来增大正数的表示值。也就是说能表示的数的量是不变的,只是从0开始了。例如short可以表示-32768到+32768,unsigned short则表示
0到65536。并不是直接将负数砍掉

这里还有一个整型溢出行为,就是超过能表示的最值之后,会有个循环一样的溢出,也就是+32767再+1的话就会变成-32768。
第三章

sizeof()函数

返回类型或变量的长度,单位为字节。

#include <iostream>
using namespace std;

int main()
{
    cout << sizeof(char) <<endl
         << sizeof(short) <<endl
         << sizeof(int) <<endl
         <<sizeof(long)<<endl
         << sizeof(long long)<<endl;
    return 0;
}

输出为:

1
2
4
8
8

可以看出各个类型的长度,char为1、short为2、int为4、long为8、long long为8。
变量的用法一样的,只不过括号可以省略:sizeof(an_int); 或者sizeof an_int;

头文件climits中定义了一些常用的符号常量:
第三章
第三章

不同进制数

第一位为1~9,为10进制数
第一位为0,第二位为0~7,为8进制数
前两位为0x或者0X,为16进制数

int dec_num = 42;
int hex_num = 0x42;
int oct_num = 042;

在输出时,用dec、hex、oct来控制cout以十进制,十六进制,八进制输出数字的格式。默认格式为十进制,在修改格式之前,原来的格式一直持续效果!

    cout<<"dec: a= "<<a<<endl;
    cout<<"hex: a= "<<hex<<a<<endl;
    cout<<"oct: a= "<<oct<<a<<endl;
    cout<<dec;//再改回默认的十进制,不然忘了会很蛋疼

输出结果为:

dec: a= 10
hex: a= a
oct: a= 12

代码中,最后别忘了将输出格式再改回十进制。

**

char类型

**
char类型经常被用作字符类型,但在本质上就是比较小的整数。它在输入,输出,赋值上的所有的字符表象的功能,都是赋值等号,cin,cout的翻译功能,内部核心仍然就是整数。翻译规则一般就是ASIC码。

    char ch1 = 97;
    cout<<ch1<<endl;
    cout<<int(ch1)<<endl;

    char ch2 = 'b';
    cout<<ch2<<endl;
    cout<<int(ch2)<<endl;

输出:

a
97
b
98

可以发现,输入的话,用编码或者字符都能接受,输出的话默认形式就是字符,除非强制转换类型,会输出ASIC码。
ASIC码中还有一些常用的转义序列。比如\n \ \? \’ \”等,反正就是一些代表特殊共能的字符。

**

布尔类型

**

bool is_ready true;
bool pass false;
bool start 100;
bool stop 0;

标准的用法是true和false。也接受数值,非0解析为true,0解析为false。

**

浮点数

**
解释下为啥叫浮点数,在计算机内部存储时,浮点数是分两块存储的,一块是字面的值,另一块就是小数点位置。所以叫浮点数。
表示方式有两种:0.34 和3.4e-1 。e表示法大小写都可以。前面为系数,后面为指数,底数为10.
基本浮点类型有三种:
float 32位
double 64位
long double 80,96,128位
三种类型的指数范围至少是-37~37
浮点数cout格式是一大块内容,后续再搞。

浮点常量是在数字后面加f或者L,大小写都可以:
1.345f
2.456L

类型转换

只说一下强制类型转换:

int a = 0;
double(a);
(double)a;
static_cast<double>(a);

这三种都是强制类型转换,一般用第一种;第二种是c时代遗留下来的,一般不用;第三种是后引入的四种强制装换中的一种,规范并严格了类型的转换。后面详说,这里只需要知道它就是强制类型转换。

auto类型就是自动推断变量类型,
auto a = 100,则a被自动推断为int型,一般auto用于复杂类型,比如长长的模板类型,来个auto看起来比较清爽。

上一篇: 第三章

下一篇: 第三章