C语言视频 VS2015:[7]基本数据类型

2025-11-16 21:02:43

1、C语言的基本数据类型其实并不多,通过msdn可以查询到,主要有如下图所示的集中基本的数据类型:

C语言视频 VS2015:[7]基本数据类型

2、按照字节数来分类

整数类型主要包括:

一个字节大小:char

两个字节大小:short

四个字节大小:long,int

小数类型主要包括:

四个字节:float

八个字节:double

3、按照有无符号来分又可以分为:

有符号:signed

无符号:unsigned

注:

① 整数类型系统默认的是有符号的;

② 浮点数类型只存在有符号的情况;

4、short 类型的写法:

① 有符号的,以下写法等价的:

    short,signed short,short int, singed short int

② 无符号的,一下写法等价的:

    unsigned short,unsigned short int

5、long 类型的写法:

① 有符号的,以下写法等价的:

    long,signed long,long int, singed long int

② 无符号的,一下写法等价的:

    unsigned long,unsigned short long

1、无符号整数在内存中的存储形式主要是按照16进制的形式进行存储,为了演示效果,我们需要进行如下操作:

① 新建一个C工程并输入下图所示程序;

② 在main函数的return 0前面加一个断点(快捷键F9);

③ 使用快捷键F5进入调试模式;

④ 使用快捷键Alt+6调出内存窗口;

⑤ 在地址栏输入 &wValue;

⑥ 回车;

C语言视频 VS2015:[7]基本数据类型

C语言视频 VS2015:[7]基本数据类型

2、① 使用快捷键  Win+R 调出运行窗口;

② 输入 calc 调出 计算器

③ 设置计算器 查看下面为程序员类型;

具体的如下图所示:

C语言视频 VS2015:[7]基本数据类型

3、① 选择为十进制;

② 输入40000;

③ 选择16进制

具体的效果如下图所示:

C语言视频 VS2015:[7]基本数据类型

C语言视频 VS2015:[7]基本数据类型

4、通过计算器我们可以知道

40000的16进制是:0x9C40

但是我的内存查看中显示的是 40 9C,正好跟16禁止的9C 40位置相反,

这个现象主要是由于处理器是小端的情况造成的,

计算机小端格式造成的结果是数值在内存中是:

低位存放高位的字节,高位存放低位的字节;

更多的关于低端字节的内容可以看:

http://baike.baidu.com/link?url=ExAQpfltX-cOXAUwpSYv9AzeDKHpGbTltjTpL41Qrka4muq45sy9RVlbvog9Ag3b0cJMhqClbNDLr3URcoYkUa

C语言视频 VS2015:[7]基本数据类型

1、为了计算的简单,这次列举的例子是

signed char 类型的变量 -10

同样进行上面的操作,后截图的效果如下图所示:

C语言视频 VS2015:[7]基本数据类型

2、通过上图的结果,我们知道-10在计算机内存中存储的16进制值是 F6

于是问题来了:

3、F6是怎么算出来的?

① 获取 -10 的绝对值:10

② 将 10 转化成16进制:A

③ 对16进制的A各位取反:F5

注:取反就是将数据的二进制形式的中 0变成1,1变成0,如:

A的二进制形式是:0000 1010

对A取反就是:1111 0101

转化成16进制就是:F5

④ 对F5 进行+1操作:F6

C语言视频 VS2015:[7]基本数据类型

4、为什么是F6呢?

这里主要主要涉及到一个补码的概念,其实在计算机的底层,是只有加法没有减法的,所谓的减法的计算,是通过将 减数 跟前面的减号一起作为一个整体,如

5 - 3 => 5 + (-3) ,然后进行的加法运行;

负数通过转成对应的补码,如-3的补码可以算出来:

① -3  的绝对值:3

② 3的二进制形式:0000 0011

③ 对3取反:           1111 1100

④ 3的补码:FC

⑤ 5 + FC 结果的16进制形式:1 02

由于是一个字节的大小,所以数据溢出了,高位的1 被舍弃了,就剩下了随后的02,于是结果便是2;

更多的关于补码的问题可以参考:

http://baike.baidu.com/link?url=eECw_IYc27hoeix4F0EGGGWMaxkxIQ_k0gW0LoBUCcf5lVMMjg-L_Bh9hcfjZSzp0dCxBEBywVADjfX1nEEPrK

1、这里举的例子是float类型的值:1.25;

通过查看内存可以知道它在内存中存储的16进制值是:00 00 a0 3f

由于计算机是小端的,所以它实际的16进制值是:3f a0 00 00

C语言视频 VS2015:[7]基本数据类型

2、制的 3f a0 00 00 对应的二进制是:

0011 1111 1010 0000 0000 0000 0000 0000

C语言视频 VS2015:[7]基本数据类型

3、单精度浮点数占4个字节32位,其中的各位的具体分布如下图所示:

符号位:第31位,其中0表示正数,1表示负数

指数位:第30-23位共8位,由于指数值没有正负数之分,而指数位又是0开始的,所以实际的0对应的值是7F,0对应的值是最小的指数16进制的-7F即10进制的-127,指数计算是:当前值减去 127 就是实际的指数值;

数据位:第22-0位共23位,由于数据位存储的是数据中小数点后面的部分,而数据是按照科学计数法存储,所以最高位永远是1,为了节省空间,计算机省略了最高位的1,所以实际的值应该是当前的值+1;

具体例子看下图,下图演示了1.25和0这两个数据的情况:

C语言视频 VS2015:[7]基本数据类型

4、双精度浮点数占8个字节64位,其中的各位的具体分布如下图所示:

符号位:第63位;

指数位:第62-52位共11位;

数据位:第51-0位共52位;

双精度浮点数的计算过程同单精度的一致;

5、方便他人亦是方便自己,如果觉得还行就点下下边的投票吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!

C语言视频 VS2015:[7]基本数据类型

1、Visual Studio 2015也存在着一下扩展的基本数据类型:

① wchar_t

② __int64

③ long long

C语言视频 VS2015:[7]基本数据类型

2、wchar_t:表示的unicode字符,在Windows系统上通常我们也可以称为宽字符,他的大小占用2个字节,没有 signed 和 unsigned 的区别,它有些类似于char 的类型,但是用字符进行赋值的时候,需要使用 L' ' 来赋值,如下图所示:

C语言视频 VS2015:[7]基本数据类型

3、__int64:表示的是64位的整数,占8个字节,他的用法跟int类似,但是他的位数更高,精度更高,存在 signed 和 unsigned 的区别,默认的没有修饰的是signed的类型;

C语言视频 VS2015:[7]基本数据类型

4、long long:跟 __int64 的作用一样

C语言视频 VS2015:[7]基本数据类型

5、方便他人亦是方便自己,如果觉得还行就点下下边投票吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!

C语言视频 VS2015:[7]基本数据类型

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢