0

我有一堆不同的数据类型我想传递给 char 但是当我使用通常的格式来传递整数时:

    char number=(char)one;

它仅适用于整数。对于其他数据类型,当我想要字符串表示时,它会给我数值。最简单的方法是什么?PS请彻底解释答案,因为当我尝试以这种方式投射时,我也遇到了指针大小问题。请只使用c语法谢谢

4

4 回答 4

3

如果您正在寻找数据类型的字符串表示形式,我认为您想要的是sprintf函数。例如,对于浮点类型,您可以这样做:

float example = 3.6;
char temp[64]; // Allocate a string of size 64.
sprintf(temp, "%f", example);

这将存储examplein temp 的字符串表示形式。

于 2013-02-26T03:08:42.830 回答
1

Achar是整数类型,这意味着它可以转换为整数(小于256)。

对于其他数据类型,当我想要字符串表示时,它会给我数值。

从技术上讲,字符串不是char. 它是一个char数组,因此最终会衰减为一个指针。

对于每种类型,您都必须创建自己toString()的函数类型,并相应地返回格式化字符串。

最简单的方法:使用sprintf()

于 2013-02-26T03:13:36.273 回答
0

让我们一次一个字地复习这一行,以使概念正确。

char number=(char)one;
  • 第一个char是声明,这意味着我正在创建一个类型为 的变量charchar是一个 1 字节(8 位)的数据类型,通常用于保存单个字符,但本质上它是一个字节;因此,它可以保存从 0x00(又名 0)到 0xFF(又名 255)的值。

  • number是类型变量的名称char

  • =是赋值运算符;你要设置的值number

  • (char)意思是“无论我后面的变量是什么类型,都将其解释为char”。这称为“投射到char”。(不是“传递给 char”)。

  • 从您的代码中,我无法判断是什么one。但是,如果它是除 achar或 0 到 255 之间的整数之外的任何值,则分配没有意义。

总结是这number只是一个字符,它将保存一个字节的值,如果你给它分配别的东西,你可能会得到不希望的结果。

于 2013-02-26T03:21:33.703 回答
0

也许你在追求这样的事情:

char number = '0' + one;

这适用于 one = [0, 9]

于 2013-02-26T03:31:01.540 回答