如果输入是一个像344565786464675345这样的大数字,我仍然得到输出,这怎么可能呢,因为char的范围是256,所以它不应该取大于256的数字,为什么char可以存储这么大的整数?
int main()
{
char b[30];
scanf("%s",b);
printf("n%s",b);
return 0;
}
char
和char
的数组之间存在差异,这就是您所拥有的。
数组最多可以存储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个字符,所以在您输入的内容后面附加了一个空字符