强制类型转换这个东西非常频繁的被使用,而且如果用的好的话,会非常的爽,我写个简单的例子。
#include "stdio.h"
void func(void *s)
{
char * str = (char *)s;
printf("str:%s\n",str);
}
void main(void)
{
char * strIn = "Linux is my world";
func(strIn);
}
执行结果
root@ubuntu:~/project# gcc 2.c && ./a.out
str:Linux is my world
root@ubuntu:~/project# cat 2.c
我们写代码的时候,在类型转换的时候,通常在前面加上类型的名字,如果不加的话,不同的类型进行运算,编译器自己去判断如何进行转换,这种方式就是隐式类型转换。
bool - > char - > short int - > int - > unsigned int - > long - > unsigned - > long long - > float - > double - > long double
举个例子
#include<stdio.h>
int main()
{
int x = 10;
char y = 'a';
// 'a' is 97
x = x + y;
float z = x + 1.0;
printf("x = %d, z = %f", x, z);
return 0;
}
结果输出
root@ubuntu:~/project# gcc 3.c && ./a.out x = 107, z = 108.000000
此过程也称为类型转换,它是用户定义的。在这里,用户可以键入强制转换结果以使其具有特定的数据类型。
C中的语法:
(类型)表达
举个例子
#include<stdio.h>
int main()
{
double x = 1.2;
int sum = (int)x + 1;
printf("sum = %d", sum);
return 0;
}
结果输出
root@ubuntu:~/project# gcc 4.c && ./a.out sum = 2
类型转换,还有一些比较神奇的,数组名转成指针,指针转成数组名等,其中还有各种BUG等着你们,各位可以过去看看。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。