如何将整数值分配给char数据类型?
在下面的代码中,如何将如何将整数值分配给char数据类型?,c,C,在下面的代码中,如何将char数据类型分配给整数变量(如char数据类型中,字母用单引号表示),并且在打印char数据类型时,使用%d下标而不是%c #include <stdio.h> int main() { char a = 30, b = 40, c = 10; char d = (a * b) / c;//a char value is storing integer value ?how ? printf
char
数据类型分配给整数变量(如char数据类型中,字母用单引号表示),并且在打印char数据类型时,使用%d下标而不是%c
#include <stdio.h>
int main()
{
char a = 30, b = 40, c = 10;
char d = (a * b) / c;//a char value is storing integer value ?how ?
printf ("%d ", d);
return 0;
}
#包括
int main()
{
字符a=30,b=40,c=10;
char d=(a*b)/c;//字符值正在存储整数值?如何存储?
printf(“%d”,d);
返回0;
}
char数据类型如何存储整型值?
char
s只是小整数,可以保存范围[-128;127]
(在某些系统上,它可能是
[0;255]
。在非常罕见的平台上,它可以有另一个大小,但您可能永远不会看到这些情况。)
像'0'
这样的字符文字只是对应符号的代码。例如,'0'
等于48
(在大多数编码中,另一个值非常罕见。)
为什么
%d
适用于char
?因为当您将char
s和short
s传递给..
函数参数时,它们会自动转换为整数。而
printf
被声明为printf(const char*,…)
此外,计算30*40
不会溢出,因为操作数被提升为int
类型,并在除法后转换回char
当传递给变量函数(如printf
时,char
再次提升为int
)
旁白:对于
float
类型,当传递到printf
、传递到double
时,该类型也会升级。这就是为什么printf
格式说明符%f
同时适用于float
和double
。至于计算,是否将float
提升为double
是一个实现决策。当您将int
存储到char
中时,它只会删除低8位以外的所有位。因为char是包含1字节(8位)数据的数据类型。因此,在char中可以存储整型值,整型值可以用8位表示。正常情况下为0-255。因此,您可以将该范围内的值存储在char中。然而,如果您试图将一个值存储在该范围之外(比如258),那么您可能会遇到问题。试试看@BillLynch我故意简化了我对OP的回答。好的,我会添加这些信息。主要的违规者是有符号或无符号的char
。这很容易在普通人可能处理的平台上发生变化。其他的则不太常见。@BillLynch:True,带有未签名的纯char
的平台比带有char\u BIT>8
的系统更常见。还值得注意的是,基本字符集的所有成员都必须具有非负值;char
可能存储负值,也可能无法存储负值,但'a'
始终为正值。