在C中存储数据有几种不同的方式,它们彼此都是唯一的。可以存储信息的数据类型称为数据类型。与其他语言相比,C对数据类型的宽容度要低得多。因此,确保您了解现有数据类型,其能力和限制非常重要。
C的数据类型的一个怪癖是它们完全依赖于您运行代码的硬件。您的笔记本电脑上的int
将小于超级计算机上的int
,因此了解您正在处理的硬件的局限性非常重要。这也是数据类型定义为最小值的原因 - 正如您将了解的那样, int
值至少为-32767到32767:在某些机器上,它将能够存储更多的值。
我们可以将其分为两类:整数和浮点数。整数是整数。它们可以是正数,负数或零。像-321,497,19345和-976812这样的数字都是完全有效的整数,但4.5不是因为4.5不是整数。
浮点数是带小数的数字。与整数一样,-321,497,19345和-976812都是有效的,但现在4.5,0.0004,-324.984和其他非整数也是有效的。
C允许我们在数据类型的几个不同选项之间进行选择,因为它们都以不同的方式存储在计算机上。因此,重要的是要了解每种数据类型的能力和限制,以选择最合适的数据类型。
整数数据类型
人物: char
char
包含字符,例如字母,标点符号和空格。在计算机中,字符存储为数字,因此char
包含表示字符的整数值。实际的翻译由ASCII标准描述。 这是一个方便的查找表。
与C中的所有其他数据类型一样,实际大小取决于您正在处理的硬件。至少,它至少是8位,因此您将至少有0到127.或者,您可以使用signed char
来获得至少-128到127。
标准整数: int
单个int
占用的内存量取决于硬件。但是,您可以期望int
大小至少为16位。这意味着它可以存储-32,768到32,767或更多的值,具体取决于硬件。
与所有其他数据类型一样,可以使用unsigned
变体。 unsigned int
可以是正数和零但不是负数,因此它可以存储0到65,535或更多的值,具体取决于硬件。
短整数: short
这不经常使用,但知道它存在是很好的。与int类似,它可以存储-32768到32767.然而,与int不同,这是它的能力范围。你可以使用short
任何地方,你可以使用int
。
更长的整数: long
long
数据类型存储整数,如int
,但以更多内存为代价提供更广泛的值。长存储至少32位,其范围为-2,147,483,648到2,147,483,647。或者,使用unsigned long
作为0到4,294,967,295的范围。
更长的整数: long long
对于几乎每个应用程序来说, long long
数据类型都是过度的,但无论如何C都会让你使用它。它能够存储至少-9,223,372,036,854,775,807至9,223,372,036,854,775,807。或者,使用unsigned long long
获得更多的矫枉过正,这将给你至少0到18,446,744,073,709,551,615。
浮点数数据类型
基本浮点数: float
float
至少需要32位来存储,但是从1.2E-38到3.4E + 38给出了6位小数。
双打: double
double
占用浮点数的两倍(所以至少64位)。作为回报,double可以提供从2.3E-308到1.7E + 308的15位小数。
获得更广泛的双打: long double
long double
至少需要80位。因此,我们可以从3.4E-4932到1.1E + 4932获得19位小数。
选择正确的数据类型
C选择数据类型,使我们对我们这样做的方式非常具体和有意。这为您提供了很多代码的强大功能,但选择正确的代码非常重要。
通常,您应该为您的任务选择最低要求。如果你知道你将从1到10整数计算,你不需要很长时间就不需要加倍。如果您知道永远不会有负值,请查看使用数据类型的unsigned
变体。通过提供此功能而不是自动执行,C能够生成非常轻便和高效的代码。但是,作为程序员,您需要了解能力和限制,并相应地进行选择。
我们可以使用sizeof()运算符来检查变量的大小。有关各种数据类型的用法,请参阅以下C程序:
#include <stdio.h>
int main()
{
int a = 1;
char b ='G';
double c = 3.14;
printf("Hello World!\n");
//printing the variables defined above along with their sizes
printf("Hello! I am a character. My value is %c and "
"my size is %lu byte.\n", b,sizeof(char));
//can use sizeof(b) above as well
printf("Hello! I am an integer. My value is %d and "
"my size is %lu bytes.\n", a,sizeof(int));
//can use sizeof(a) above as well
printf("Hello! I am a double floating point variable."
" My value is %lf and my size is %lu bytes.\n",c,sizeof(double));
//can use sizeof(c) above as well
printf("Bye! See you soon. :)\n");
return 0;
}
输出:
你好,世界!
你好!我是一个角色。我的值是G,我的大小是1个字节。
你好!我是一个整数。我的值是1,我的大小是4个字节。
你好!我是一个双浮点变量。我的值是3.140000,我的大小是8个字节。
再见!再见。 :)
虚空类型
void类型指定没有可用的值。它用于三种情况:
1.函数返回void
C中有各种函数不返回任何值,或者可以说它们返回void。没有返回值的函数的返回类型为void。例如, void exit (int status);
2.函数参数为void
C中有各种不接受任何参数的功能。没有参数的函数可以接受void。例如, int rand(void);
3.指示无效
void *类型的指针表示对象的地址,但不表示其类型。例如,内存分配函数void *malloc( size_t size);
返回一个指向void的指针,该指针可以转换为任何数据类型。
回顾
- C数据类型的实际能力取决于硬件。因此,为数据类型定义了最小大小。
- 浮点数将允许您有小数,而整数不会。
- 我们有一些整数值的选项:
- char,专为字符设计但存储数字
- int,这是标准的整数数据类型
- short,这是一种不太常用但仍然可用的整数数据类型
- long,它提供了大范围的整数值
- long long,它给出了一个过度的整数值范围,但有时仍然有用。
- 我们还有一些浮点值的选项:
- float是基本浮点值,存储6位小数
- double占用内存的两倍,并给出15位小数
- long double占用更多内存并提供19位小数
- 选择正确的数据类型非常重要,它使程序员能够以较低的级别对程序进行大量控制。
更多C语言教程
这里有更多完整C语言教程