C中的数据类型(char)

  • 本文关键字:char 数据类型
  • 更新时间 :
  • 英文 :


如果输入是一个像344565786464675345这样的大数字,我仍然得到输出,这怎么可能呢,因为char的范围是256,所以它不应该取大于256的数字,为什么char可以存储这么大的整数?

int main()
{
    char b[30];
    scanf("%s",b);
    printf("n%s",b);
    return 0;
}

charchar的数组之间存在差异,这就是您所拥有的。

数组最多可以存储29位数字加上null终止符,但您输入的值是,而不是存储为大整数。相反,它被存储为一系列字符,其中每个字符代表一个数字:

Index of b[]  0   1   2   3   4   5   6   7   8  ...
char value   '3' '4' '4' '5' '6' '5' '7' '8' '6' ...
num value     51  52  52  53  52  53  54  55  54 ...

所有字符都具有可由单个char表示的范围内的数值。

您所拥有的是30 char的数组,而不是单个char-

char b[30];   //b is an array of char 

所以b的大小是30*sizeof(char)。这意味着它可以容纳30个字符(包括'')。您的输入存储在此字符数组中(足以用于提供的输入),因此,您可以获得正确的输出。

char b[30];

b是一个数组,最多可以存储30个字符。

作为对的回应

scanf("%s",b);

您已输入18个字符的

344565786464675345 

由于%s说明符总共包含19个字符,所以在您输入的内容后面附加了一个空字符。或

b[18]='' // Remember the count starts from 0

因此,数组b中仍然有11个可用字节,因为一个字符是1个字节。

请注意,如果您试图在数组中存储一个字符串,那么该数组将以null终止,即您需要在字符数组的末尾有一个,才能将该组视为字符串。

因此,从技术上讲,您可以使用char b[30]生成一个最多29个字符的字符串,使其成为一个有效的字符串。

最新更新