Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 字符数和整数的大小(字节)_C_Char_Int_Text Files - Fatal编程技术网

C 字符数和整数的大小(字节)

C 字符数和整数的大小(字节),c,char,int,text-files,C,Char,Int,Text Files,如果我错了,请告诉我,如果一个数字存储为一个字符,那么每个字符将包含1个字节(不是4个字节)? 例如,如果我将一个int变量设置为数字8,将一个char变量设置为“8”,那么int变量将消耗更多内存? 如果我创建一个int变量作为数字12345和一个字符数组“12345”,字符数组会消耗更多内存吗 在文本文件中,如果存储了数字,它们会被视为整数还是字符 谢谢。是的,你所有的答案都是正确的 int将始终占用sizeof(int)字节,8(int)假定32位int将占用4个字节,而8(char)将占

如果我错了,请告诉我,如果一个数字存储为一个字符,那么每个字符将包含1个字节(不是4个字节)? 例如,如果我将一个int变量设置为数字8,将一个char变量设置为“8”,那么int变量将消耗更多内存? 如果我创建一个int变量作为数字12345和一个字符数组“12345”,字符数组会消耗更多内存吗

在文本文件中,如果存储了数字,它们会被视为整数还是字符


谢谢。

是的,你所有的答案都是正确的

int
将始终占用
sizeof(int)
字节,8(int)假定32位
int
将占用4个字节,而8(char)将占用一个字节

在我看来,考虑最后一个问题的方法是数据以字节的形式存储。char和int是解释字节的方式,所以在文本文件中可以写入字节,但如果要将人类可读的“8”写入文本文件,则必须以某种编码方式写入,例如ASCII,其中字节对应于人类可读的字符。因此,要写入“8”,您需要写入字节
0x38
(ASCII值为
8


<>所以,在文件中,你有数据,而不是int或字符。

当我们考虑<代码> int <代码>的内存位置,或者对于<代码> char 我们认为是一个整体。整数通常使用4字节或32位的内存字存储,因此从0到4294967295(232-1)的整数可以存储在
int
变量中。由于我们总共需要32位(32/8=4),因此我们需要4个字节作为
int
变量

但要存储ascii字符,我们需要7位。ASCII表有128个字符,值从0到127。因此,7位足以表示ASCII中的字符;(然而,大多数计算机通常为ASCII字符多保留1位(即8位)

关于你的问题:-

如果我创建一个int变量作为数字12345和一个字符数组“12345”,字符数组会消耗更多内存吗

从上面的定义来看,是的。在第一种情况下(int值),它只需要4个字节,而在第二种情况下,它总共需要5个字节。原因是在第一种情况下,
12345
是一个单整数值,在第二种情况下,
“12345”
总共是5个ascii字符。即使在第二种情况下,您实际上还需要一个字节来保存
'\0'
字符作为字符串的一部分(标记字符串的结尾)

如果一个数字被存储为一个字符,那么该数字的每个字符将包含1个字节(不是4个字节)?例如,如果我将一个int变量设置为数字8,将一个char变量设置为“8”,则int变量将消耗更多内存

可以,因为可以保证(假设为8位字节):


如果我创建一个int变量作为数字12345和一个字符数组“12345”,那么字符数组会消耗更多内存吗

正确。请参见以下内容之间的不同:

strlen("12345") == 5
sizeof(12345)   >= 2
当然,对于像
7
这样的小数字,情况并非如此:

strlen("7") == 1
sizeof(7)   >= 2

在文本文件中,如果存储数字,它们是整数还是字符

要读取任何数据(无论是在文件中还是在粘土平板电脑中!),您需要知道其内容

如果是文本文件,则通常使用字符对数字进行编码,可能采用十进制表示

如果它是一个二进制文件,那么您可能会发现它们被写入特定计算机的内存中


简而言之,这取决于。

定义int时,将根据编译器选项分配内存(可以是4到8个字节)。分配给int的数字按原样存储。 e、 g int a=86; 数字86将存储在为a分配的内存中

当定义字符时,每个字符都有数字。当这些字符需要打印时,同样的字符会打印出来,但当它存储在内存中时,它会存储为数字。这些被称为ASCII字符,还有一些字符。
要存储的分配为1字节,因为使用1字节可以表示2^8个符号。

粗略地说,您是正确的。但请根据用途而不是使用的字节数选择类型。使用数字进行计算,使用字符串作为文本。
strlen("7") == 1
sizeof(7)   >= 2