您的位置:首页 > 编程语言 > C语言/C++

C语言中的数据类型转换-横向箭头的真正意思

2016-03-28 18:07 351 查看
我在学习C语言的过程中,有一个知识点不是很明白,但经过思考,好像是这么回事。我们先看一张图,如下:



可以在图中看到横向箭头,书上的意思是:横向向左的箭头表示必定转换,如char型必定转换成int型,short型转换成int型,float型转换成double型。带着疑问,敲了几个例子,大家共享一下。

例1.

#include <stdio.h>  //头文件

void main( )
{
unsigned char a = 0x22;      //变量a定义初始化
printf("~a is : %x\n",~a);    //将其翻转后直接输出
}


运行结果如下:



可以发现结果是4个字节,char型被自动转成int型了,这就验证了上图所说,char型被计算机自动转成了int型。

但你若要将值进行转存一下,再输出就能得到自己所需要的数据类型值。如下面的例子,如下:

例2.

#include <stdio.h>  //头文件

void main( )
{
unsigned char a = 0x22, b = 0;      //变量声明
b = ~a;
printf("~b is : %x\n",b);    //将其翻转后直接输出
}


运行结果为:



结果中可以看到,对a取反后然后再赋给字符型b,这样输出b就是自己想要的值。

再给出一个例子

#include <stdio.h>
void main()
{
char a='Q';

printf("a的字节数为:%d\n",sizeof(a));
printf("'Q'的字节数为:%d\n",sizeof('Q'));

}


结果为:



浮点型也是一样

代码如下:

#include <stdio.h>
void main()
{
float a=1.3;

printf("a的字节数为:%d\n",sizeof(a));
printf("1.3的字节数为:%d\n",sizeof(1.3));

}


结果为:



所以可以证明横向箭头的正确性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言