C语言学习入们到精通之学习笔记(四)
2016-06-03 19:57
399 查看
C语言中的类型转换
在表达式中常遇到类型的转换,包含自动类型转换与强制类型转换,在C语言开发过程中,很多的开发人员往往会忽略数据类型的自动转换(即隐藏的),造成表达式在逻辑并看不出什么错误,而表达式的结果确怎么弄都不对,不仅耽误项目开发进度而且编写的代码bug太多,所以在我们的开发过程中一定要数据类型的自动转换加以注意。一、自动转换规则
在表达式中,以高级别为准来自动转换 char short int long flaot double 注:从左到右数据类型级别依次增高
例子: 'c'+12;//计算结果的数据类型是int, 'c'先变成int再和12相加 23f+12;//flaot类型先自动转换为double,然后参与运算,12是整型转换为double参与运算 'a'+'b';//char类型先自动转换为int类型,然后参与运算 'c'+32+(4e+1);//最终的结果是double类型 int a=3.2;//最终a的值为3,自动转换,舍去小数部分(double类型自动转换为int类型) double b=3;//最终b的值为3.0,自动转换
总结:
当类型转换出现在表达式中,有符号和无符号的char和short类型都会自动被转换为int(如果 short与int大小相同时(看平台),那么unsigned short 比 int大,在那种情况下将把unsigned short转换为unsigned int),float类型会被自动转换为double
在包含两种数据类型的任何运算里,两个值都被转换成两种类型里较高的级别
在赋值语句里,计算的最后结果被转换成将赋予值得那个变量的类型,这个过程可能导致提升也可能导致降级
二、强制转换
格式: (类型)值
例子: 3/2;//值是1,整数除整数值是整数 (double)3/2;//值是1.5,先将3转换为3.0,然后2也自动转换为2.0(强制转化优先级高)
总结:
强转 转的是类型所代表的长度、数据的格式,强转的结果存在表达式的临时存储区
一块内存空间可以存任意数据类型的数据,只要当前的内存使用什么数据类型表示
例如:int a=123;double(a); 执行后a的值还是a,并没有发生改变,(double)a是一个新的内存空间,是表达式的临时存储区,存的是123.0
三、字符串与数字之间的转换
字符串,即多个字符(包含/0,是常量,字符串的本身代表字符串的内存地址,即字符串首个字符的内存地址)
字符串转数字(函数)
int atoi(const char *nptr);
long atol(const char *nptr);
double atof(const char *nptr);
参数:nptr 字符串
返回类型:int、long、double
例子: int main(int argc,char *argv[]) { //字符串转整型 int a=atoi(argv[1]); }
数字转字符串
int sprintf(char *str, const char *format, …);
参数: str 指定的内存地址 将转完的字符串保存在这个内存中
format 含有格式符的字符串
%-md 整型
%-ml 长整型
%mu 无符号
%mo 八进制
%mx 十六进制
%mp 十六进制 前面有0x
%m.nf 单精度
%m.nlf 双精度
%mc 字符
%ms 字符串
m代表占多少个字符的宽度
.n代表占小数点的位数
-代表左对齐
… 用逗号分隔的值(常量、变量、表达式) 替换前面的格式
例子: int main(int argc,cahr **argv) { //数字转字符串 int a=23; char str[256]; char str1[256]="laixioa"; char str2[256]="dads"; sprintf(str,"%d",a);//将整型数据转换为字符串 sprintf(str,"xasd%%s",str1,str2);//字符串拼接 }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- c#之用户定义的数据类型转换介绍
- 浅析C#数据类型转换的几种形式
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构