我的主要目标是将int转换为char类型。我使用(char)1
来输入强制转换,但由于以下结果,它似乎不起作用:
我在以下代码中比较c ++中的'1'
和(char)1
if ('1' == (char)1)
{
return 1;
}
然而,似乎由于不同的变量类型,比较要么无效,要么它们实际上并不相同。我一直认为将整数1
转换为字符为(char)1
。谁能告诉我如何将整数1
转换为char '1'
?
答案 0 :(得分:6)
' 1'根据{{3}}
等于(char)49(char)1等于SOH (start of heading)
,这是一个不可打印的字符。
答案 1 :(得分:2)
因为ASCII等效于'1'是49而不是1。
答案 2 :(得分:1)
' 1' ==可打印1的字符CODE值,传统的ASCII值,但今天,使用任何字符集中的代码点值。
旧技巧是(ch - ' 0')来获取数值。
根据语言,您应该使用转换函数作为完整字符串。
C ++ - stoi
,stol
或strol
或stringstream
C - atoi
或atol
(这些也适用于C ++)
答案 3 :(得分:0)
正如伊维萨所说,char(49)实际上是1。这是因为char从ASCII库中提取。
答案 4 :(得分:-1)
因为当您使用X对(char)X
进行编号时,您只需将X转换为char的范围,-128 to 127 or 0 to 255(就像模数一样)。
例如,(char)300
提供44
(因为300%256 = 44)而(char)1
提供1
。正如其他评论中所述,1是与SOH(标题开始)的ASCII等价物,而不是字符'1'。