C语言之数据类型

本文详细介绍了C语言中的四种基本数据类型:整型、浮点型、指针及聚合类型,并深入探讨了每种类型的特点及其在不同平台上的表现。特别是对整型中的九种类型进行了详细的解释,并通过示例代码展示了如何确定各种整型数据的最大和最小值。此外,还讨论了字符串常量的本质,即它们实际上是指向字符的指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博文
C语言再学习 – NUL和NULL的区别
对字符串常量 的理解

基本数据类型

4种基本数据类型——整型、浮点型、指针和聚合类型(如数组和结构)。

整型

整型一共有9种——char , signed char ,unsigned char ,short int ,unsigned short int ,int ,unsigned int , long int ,unsigned long int。
这9种类型在程序中的分配的内存大小是不确定的,不同的机器上可能是不同的,但ANSI标准里加入了一个规范,这个规范规定了各个整型最小的表示范围,这样就更利于程序的移植。在头文件limits.h中定义了诸如SCHAR_MIN SCHAR_MAX UCHAR_MAX的宏,这些宏描述了你机器上对这9种整型数据类型表示范围。我将它们打印了出来:

#include <stdio.h>
#include <limits.h>
int main(void)
{
	printf("字符位数 %d\n",CHAR_BIT);
	printf("字符型 SCHAR_MIN=%d  SCHAR_MAX=%d  UCHAR_MAX=%d\n",SCHAR_MIN,SCHAR_MAX,UCHAR_MAX);
	printf("短整型 SHRT_MIN=%d   SCHRT_MAX=%d  USHRT_MAX=%d\n",SHRT_MIN,SHRT_MAX,USHRT_MAX);
	printf("整型   INT_MIN=%d    INT_MAX=%d    INT_MAX=%u\n",INT_MIN,INT_MAX,UINT_MAX);
	printf("长整型 LONG_MIN=%ld   LONG_MAX=%ld   LONG_MAX=%lu\n",LONG_MIN,LONG_MAX,ULONG_MAX);
	//printf("%ld\n",NULL);
	return 0;	
}

在这里插入图片描述
字符位数CHAR_BIT是char 类型的位数。从最后两行可以看出,长整型并非一定比整型表示的范围更大,编译器只能保证长整型的范围不小于整型。
这里要提一下char这个类型,虽然单独设计一个char的目的是为了让它容纳字符型值,但字符在本质上是小整型值,缺省的char要么是signed char,要么是unsigned char,这取决于编译器。如果在A机器中字符变量char定义为signed char类型,但在B机器中char 被定义为unsigned char类型,那么就不能确保程序移植的正确性。因为如果A中使用-100到+100来表示字符,B中使用0到+200来表示字符,那么这两个不相交部分的字符就是不可移植的。因此为了确保移植的正确,要在signed char 和unsigned char范围的交集内——0到127 来定义字符,ASCII就是如此。

浮点型

浮点数包括float、double、long double,通常这些类型分别提供单精度、双精度。与整型类似,在float.h头文件里定义了FLT_MAX DBL_MIN 和LDBL_MAX,分别表示float double 和 long double能够存储的最小值。浮点数字在缺省的情况下都是double类型的,除非它的后面跟一个L或l表示它是一个long double 类型,或者跟个F或f表示它是一个float类型的值。
组成原理:

指针

指针是C语言的精髓所在,单从数据类型的角度来看指针的话,C语言允许在指针上执行算数或比较操作,也允许创建指向已经存在的数据对象的指针。
这里要特别提一下C语言中的“字符串常量”,因为一个字符串常量的直接值并不是具体的字符,而是一个指向字符的指针,因此你可以把一个字符串常量赋给一个字符指针变量,但不可以赋给一个字符数组,比如:

#include <stdio.h>
int main()
{
	char a[10];
	a="abc";
	return 0;
	
}

这样写会出现错误:
在这里插入图片描述


#include <stdio.h>
int main()
{
char *a;
a=“abc”;
return 0;

}


这样写是正确的,而且相比于“char * a = "abc”,更能突出字符串常量“abc”的直接值是一个指针的事实。

如果对字符串常量还有疑惑,可以参考文章开头的文章链接,讲的很仔细。

聚合类型此处不展开,之后专题复习时在统一解析。
本篇博文主要参考了《c和指针》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值