C中的数据类型


在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语言教程