C语言程序设计--类型转换

变量定义



int var_int = 111111111;
char var_char = '2';
double var_double = 3.30;
float var_float = 4.80;
short int var_short = 5;
long int var_long = 6111111111111111;

数字间的类型转换



总结:占字节数多的类型转换成占字节数少的类型时,会根据在占字节少的类型的内存区的01排列来决定值。

int 和 short的转换


(int)var_short//short->int
(short)var_int//int->short 如果int过大,short会根据自己所占位置的01情况成为相应的数值

int 和 long的转换


(int)var_long//long->int 如果long过大,int会根据自己所占位置的01情况成为相应的数值
(long)var_int//int->long

short 和 long的转换


(long)var_short//short->int
(short)var_long//long->short 如果long过大,short会根据自己所占位置的01情况成为相应的数值

int 和 float的转换


(int)var_float//float->int向下取整
(float)var_int//int->float

int 和 double的转换


(int)var_double//double->int向下取整
(double)var_int//int->double

double 和 short的转换


(short)var_double//double->short向下取整
(double)var_short//short->double

float 和 short的转换


(short)var_float//float->short向下取整
(float)var_short//short->float

double 和 long的转换


(long)var_double//double->long向下取整
(double)var_long//long->double

float 和 long的转换


(long)var_float//float->long向下取整
(float)var_long//long->float

数字与字符、字符串的转化



这是一组函数,在头文件<stdlib.h>中

字符串转数字


atoi();//把字符串转化为整形。
atol();//把字符串转化为长整形。
atof();//把字符串转化为双精度浮点型。
strtod();//将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
strtol();//将字符串转换为长整值,并报告不能被转换的所有剩余数字。
strtoul();//将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。

数字转字符串


itoa();//将整型值转换为字符串。
ltoa();//将长整型值转换为字符串。
ultoa();//将无符号长整型值转换为字符串。
gcvt();//将浮点型数转换为字符串,取四舍五入。
ecvt();//将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
fcvt();//指定位数为转换精度,其余同ecvt()。

指针的转换



指针强制类型转化


TYPE1* point1;
TYPE2* point2;
point1 = (TYPE1*)point2;

举例


void *buffer;
char *p_addr = (char *)buffer;

或者

//内存分配相似时的指针类型变化
struct sockaddr_in server;
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(4444);
server.sin_addr.s_addr = inet_addr("192.168.0.101");
int result = connect(sockfd, (struct sockaddr*)&server, sizeof(struct sockaddr));//调用时转化了

猜你喜欢

转载自www.cnblogs.com/KevinGeorge/p/10242257.html