我有一堆不同的数据类型我想传递给 char 但是当我使用通常的格式来传递整数时:
char number=(char)one;
它仅适用于整数。对于其他数据类型,当我想要字符串表示时,它会给我数值。最简单的方法是什么?PS请彻底解释答案,因为当我尝试以这种方式投射时,我也遇到了指针大小问题。请只使用c语法谢谢
如果您正在寻找数据类型的字符串表示形式,我认为您想要的是sprintf函数。例如,对于浮点类型,您可以这样做:
float example = 3.6;
char temp[64]; // Allocate a string of size 64.
sprintf(temp, "%f", example);
这将存储example
in temp 的字符串表示形式。
Achar
是整数类型,这意味着它可以转换为整数(小于256
)。
对于其他数据类型,当我想要字符串表示时,它会给我数值。
从技术上讲,字符串不是char
. 它是一个char
数组,因此最终会衰减为一个指针。
对于每种类型,您都必须创建自己toString()
的函数类型,并相应地返回格式化字符串。
最简单的方法:使用sprintf()
让我们一次一个字地复习这一行,以使概念正确。
char number=(char)one;
第一个char
是声明,这意味着我正在创建一个类型为 的变量char
。 char
是一个 1 字节(8 位)的数据类型,通常用于保存单个字符,但本质上它是一个字节;因此,它可以保存从 0x00(又名 0)到 0xFF(又名 255)的值。
number
是类型变量的名称char
=
是赋值运算符;你要设置的值number
(char)
意思是“无论我后面的变量是什么类型,都将其解释为char
”。这称为“投射到char
”。(不是“传递给 char”)。
从您的代码中,我无法判断是什么one
。但是,如果它是除 achar
或 0 到 255 之间的整数之外的任何值,则分配没有意义。
总结是这number
只是一个字符,它将保存一个字节的值,如果你给它分配别的东西,你可能会得到不希望的结果。
也许你在追求这样的事情:
char number = '0' + one;
这适用于 one = [0, 9]