C语言基础之《数据类型》

 C语言有四种基本数据类型:整形,浮点型,指针,聚合类型(数组和结构体)其它各种类型都是由这四种基本类型的各种组合构成。

 

其中整形和指针容易混淆,现简要说说它们的相同点和不同点:                

相同点:从表面上看都是整数,都可以整数的形式输出。(指针通常以十六进制形式书写)。

不同点:物理含义不同,整形一般都有量的含义。指针则没有。另外不同类型的整形数据位数不同,比如char型只有8bit,而指针的位数取决于不同的平台。通常等于CPU地址线数。但对于固定的平台指针的位数是固定的。比如16,32,64位。

 

【1】整形

整形家族有九种数据类型:字符型(char), 有符号字符型(signed char),无符号字符型 (unsigned char),短整型( short) ,无符号短整形( unsigned shortv) ,整形( intv) ,无符号整形(unsigned int),长整形(  long),无符长整形(unsigned long)。

 

表面上看长整形一定比短整形长。但ANSI标准是这样规定的:长整形至少和整形一样长,整形至少和短整型一样长。后来又定义了一个规范来说明各整形值的最小允许范围。既同一种数据类型在各种机器上所能表达范围的交集。

 

char ::0 到127

signed char:-128到127

signed char:0 到256

short:-32768 到32767

unsigned short:0 到65535 

int:-32768到32767

unsinged int: 0 到65535

long:-2,147,483,648到2,147,483,647.

unsigned long: 0 到4,294,967,295.

从这个规范可以看出规范只是规定了short,int,lont型长度分别至少为16bit,16bit,32bit。并没有规定long一定比short长。至于int型是16bit还是32bit,取决于不同的机器,通常等于其字长。

另外为了满足更大的数值范围ISOC99 增加了长长整形(long long )和无符号长长整形(unsigned long long)两种整型数据类型.一般为64位。以为一些编译器不支持,为了代码的可移植性建议不使用。

在头文件limits.h定义各种整数类型的范围。

 

整形字面值

整形字面值(literal):即指定了自身的值,并且不允许发生改变。

当一个程序里出现整形字面值时,它究竟属于九种类型中的那一种呢?缺省规则是:

当整形字面值是以十进制的形式书写的时候,它是int,long,unsigned long三种数据类型中最短但能完整容纳这个数据的类型。

当整形字面值是以八或十六进制的形式书写的时候,它是int,unsigned int,long,unsigned long四种数据类型中最短但能完整容纳这个数据的类型。

 

我们可以做一个小测试

 

 

int main(int argc, char **argv)
{
     fprintf(stdout, "sizeof(2) = %d/n",siezeof(2));
     fprintf(stdout, "sizeof(int) %d/n",sizeof(int)); 
}

 

这个两行输出的结果都是2或4.(取决于编译器),证明了2这个整形字面值被缺省规则为int型。

当然我们也可以通过加后缀显示的指定字面的数据类型。L或l将字面值显示的指定为long型。U或u显示的指定为unsigned型。

如:235l.显示的指定为long型。

 

另外注意:字符常量的类型总是int型。不允许加后缀显示的改变数据类型。

如果我们测试的话会发祥sizeof('a') 于 sizeof(int)大小是一样的。

标准也允许诸如'abc'这样的多字节字符常量,但他们的实现在不同环境中可能不一样,故不鼓励使用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值