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