如何在没有C库的情况下将整数转换为char?

nun*_*nos 0 c

在交流编程练习中,我被要求在不使用C库的情况下将int转换为char.

知道如何去做吗?

编辑:我的意思是int是内置的C/C++类型

谢谢.

Mar*_*ers 5

投了吗?

char c = (char)i;
Run Code Online (Sandbox Code Playgroud)

或许你的意思是这个?

char c = (char)('0' + i);
Run Code Online (Sandbox Code Playgroud)

我确定这不是你的意思...我猜你想要创建一个字符串(字符数组)?如果是这样,那么您需要从最低有效数字开始一次转换一位数.你可以用伪代码递归地做到这一点:

function convertToString(i)
   if i < 10
       return convertDigitToChar(i)
   else
       return convertDigitToString(i / 10) concat convertDigitToChar(i % 10)
Run Code Online (Sandbox Code Playgroud)

/是整数除法,%是整数模.您还需要处理负数.这可以通过首先检查您是否有负数,在aboslute值上调用函数并在必要时添加减号来完成.

在C中,对于性能,您可能会使用循环而不是使用递归来实现它,并且可以直接修改字符数组的内容而不是连接字符串.

  • 如果你想编写真正可移植的代码,你应该使用`"0123456789"[i]`而不是`(char)('0'+ i)`(后者将在诸如EBCDIC之类的奇数编码上失败). (3认同)
  • @Samuel:在符合标准的编译器中,十进制数字保证是连续的.5.2.1:"在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应大于前一个值的值." 在EBCDIC中,它们是:http://en.wikipedia.org/wiki/EBCDIC (2认同)