第一种 字符型(char) 占1BYTE
第二种 整型(int) short int 占 2BYTE int 占4BYTE
第三种 浮点型 float 占4BYTE double 占8BYTE long double 占16BYTE
主要记得三种
一,整型
int 2Byte
signed int 2Byte
unsigned int 4Byte
long int 4Byte
二.实型
float 4Byte
double 8Byte
long double 16Byte
三.字符型
char 1Byte
变量的三要素:类型,符号,数值。
int num = 3;
int* a = num; (错误,因为变量a的类型是int*,而num的类型是int)。
int* a = #(正确,变量类型一样)。
*a = #(错误,解释跟上面那种错误一样的,变量类型不一致)。
指针定义时的*跟(*a)中的*意义是不一样的,定义中的*只是为了跟不带*类型定义区分开,
比如 int*与int,而(*a)中的*就是一个取内容的运算符。指针类型指的就是指针所指向的变量的类型,
int*定义的是一个地址变量,int定义的是一个整数变量。
这道题我没接触过,你打不明确
变量的三要素:类型,符号,数值。
int num = 3;
int* a = num; (错误,因为变量a的类型是int*,而num的类型是int)。
int* a = #(正确,变量类型一样)。
*a = #(错误,解释跟上面那种错误一样的,变量类型不一致)。
指针定义时的*跟(*a)中的*意义是不一样的,定义中的*只是为了跟不带*类型定义区分开,
比如 int*与int,而(*a)中的*就是一个取内容的运算符。指针类型指的就是指针所指向的变量的类型,
int*定义的是一个地址变量,int定义的是一个整数变量。
指针的运算
赋值运算
int* a = #
char* a = "cbh ibican";
char* a;
a = "cbh ibican";
自增自减运算
a++,a--;
指针相减
int* a;
int num[10],temp;
a = num +3;
temp = a - num;
指针,地址运算
int *ip1,*ip2;
ip1 = ip2 + 1;
ip1 - ip2;(指针运算) 1
(int)ip1 - (int)ip2;(地址运算) 4
还有两类特别的指针,数组指针与函数指针,需明确的是这两类是指针,不是数组或函数
int (*a)[10]; (指针a指向一维数组,元素个数是10个,类型是int)
int (*a)(); (指针a指向函数,且此函数的参数为空的)
数据类型及占用的字节
bool 1
char 1
short 2
short int 2
signed short 2
unsigned short 2
int 4
long int 4
signed int 4
unsigned int(unsigned) 4
long 4
unsigned long 4
float 4
double 8
void* 4 (void* 可表示为任意的指针)(char*,int*,float*,double*)
enum 4
32位操作系统变量所占的字节
char a[]="hello";
char b[100];
char *p=a;
类型 字节长度
sizeof(a) 6
sizeof(b) 100
sizeof(p) 4
数据类型的转换
自动转换:这种转换是从低类型转换到高类型,不会有精度损失。也称隐式的保值转换。
int --> unsigned --> long --> double --> long double
^ ^
short float
强制转换:分为显示强制转换与隐式强制转换,我主要解释强制转换。
显示强制类型转换一般用运算符来实现,通常是将高类型转换为低类型,这是可能会出现精度损失,且是非保值转换,但强制转换是暂时的,不被强制转换时会回到原来的类型。