整型:
short 2字节 16位 能存储的数的范围
signed short -32768 -- 32767 (有符号)
unsigned short 0-65535 (无符号)
signed类型有符号位
unsigned类型没有符号位
int 4字节 32位
signed int -2,147,483,648-2,147,483,647
unsigned int 0-4,294,967,295
long 4字节 32位(MSVC中是与int一样大,其他编译器中Long肯定比int来的大)
long long 8字节 64位
signed和unsigned是类型修饰符
含义:
signed 有符号变量;有符号位,可以表示负数
unsigned 无符号变量;无符号位,无法表示负数
布尔型
_Bool (C中的bool类型)
如果要按照C++的方式来写,需要包含头文件
#include <stdbool.h>
bool(C++的类型)
浮点数:在计算机中是无法精准存储的 存在尾数和指数
涉及到浮点寄存器;浮点数是不精确存储
如浮点数1.1实际上它的存储可能是1.100000000000100000001
那么在搜某个值的时候(如:x=7.1);必须要搜7.1<x<7.2
Float 单精度浮点型 4字节
double 双精度浮点型 8字节
字符或字符串
char(Ascii) 1字节 8位
存储某个字符其实就是存储一个ascii编码
字符串的表示
1.数组
存储一个数组
char szBuffer[] = "hello" #中括号表示一个数组
Fn+f9打断点后,将szBuffer变量输入到内存调试栏中
68 65 6c 6c 6f 00得到十六进制数
0x68->Ascii码中的小写h
0x65->e 直接对照Ascii码表即可
...
00表示字符串的结束符(表示终止)--->如果是一个字符串就必须有00结尾
2.指针:
char *szBuffer = "hello";
68 65 6c 6c 6f 00(字符串在内存中的表示;00表示字符串结束的符号)
内容是一样的,数组和指针的区别:数组在声明阶段在内存中就已经有地址了,但是指针在声明 阶段还没有数组
wchar_t (unicode) 2字节 16位
字符串的表示:
wchar_t szBuffer[] = L"hello"; #需要在字符串前加上L,才能表示wchar_t类型的参数,没有加L则表示char类型的
内存读取:68 00 65 00 6c 00 6c 00 6f 00 00 00
但是可以看到wchar_t类型一个字符是以2个字节来表示的,unicode(wchar_t)可以表示ASCII(char)表示不了的字符,wchar_t类型的数据可以兼容char类型的,预留的00是为了在兼容的同时还可以去表示其他的字符。
char类型和wchar_t类型在内存中使用整数表示的,那么这个时候就可以表明这两个类型的值也是有存储范围的
char => 0-255(无符号) -128-127(有符号)
wchar => 0 - 65535 (无符号)...