C字节

来源:互联网 发布:淘宝好评如何删除评价 编辑:程序博客网 时间:2024/05/16 07:29

以前练习C的时候,对各种数据类型所占的字节数总是云里雾里,

今天索性锁自己搜了些资料,自己试了试,把索了解的记下来,也便温故而知新。

首先讲讲编译环境

老师推荐的linux平台,自己在虚拟机中安装了debian7 32位,linux下的debian7就如同windows下的win7,同样属于操作系统。

在linux下常用的编译器是gcc编译器,自己安装和配置过虚拟机的人就知道,虚拟机配置完成后需要安装软件,其中在命令行输入

apt-get isntall gcc  就是在安装gcc编译器。因为我们是用putty来远程访问linux服务器,所以有的同学就认为putty是编译器,实际上

putty只是一个远程登录工具。

纠正了误区之后,再来看看常用的编译器,今天主要下载和使用了vc  6.0(64位操作系统可运行)还有tc (只适用32位)。

不同的编译器之间在数据存储时是有区别的。

#include<stdio.h>
#include<string.h>
int main()
{
int k=1;
char kk='d';
float kkk=27.8;
char str1[]="123";
char str2[]="abc";
char str3[]="你好";
printf("%d\n",sizeof(k));
printf("%d\n",sizeof(kk));
printf("%d\n",sizeof(kkk));
printf("%d\n",sizeof(str1));
printf("%d\n",sizeof(str2));
printf("%d\n",sizeof(str3));
printf("%d\n",strlen(str1));
printf("%d\n",strlen(str2));
printf("%d\n",strlen(str3));
return 0;
}

在gcc上的运行结果是   4  1  4  4  4  5   3   3  4

在vc上的运行结果  是    4  1  4  4  4  5   3   3  4

在tc上的运行结果  是     2  1  4  4  4  5   3   3  4

上面可以看到的是,

有符号整形在gcc编译器以及vc编译器中存储的是4个字节、

在tc中是两个字节、一个char是1个字节、float是4个字节、

汉字需要两个字节来存储,所以这样的语句是错误的,char    ch='你';

srlen()函数的返回值是字符串中字符所占的字节数(除了结束符之外的字符),是字符串中的函数。

字符串中字母和数字是占一个字节、汉字是占两个字节。

c语言中的字符串char str[30]="yu";sizeof(str)的返回值是30,依次的将str[0]、str[1]分别存放的是‘y'和’u'后面

跟上的依次都是‘0’来填满它申请的整个空间,strlen(str)返回值只是没有被结束符占据的字符的个数。

以前总爱将sizeof和strlen两个函数混在一起,其实strlen函数只是对于字符串有效的,两者的区别也是挺大的。

后来有人问我vs2010是不是也属于编译器,在网上查找了一下,vs2010属于开发环境,

是目前最流行的windows应用平台的开发环境,之前在安装时,他有安装的选项,

可一般选择c++或者mfc等来安装,发现每一种安装方式他都是带有自己的编译器的。

理解可能还是有不到位的地方,好记性不如烂笔头,静下心来学。








0 0