【发布时间】:2016-01-20 11:20:27
【问题描述】:
我尝试了这种方法将 char 数字转换为整数数字 ('3'->3),它似乎有效。
char c='x';
int i=atoi(&c);
我的问题是,这会一直有效吗?
在第一个字符之后总是有一个 NULL 字符吗?
还有另一种使用隐式类型转换的方法,但我不确定这是一个好习惯。实际上,我很惊讶即使使用 -Wall 和 -Wextra 也没有警告。
int i = c - '0';
注意我使用的是 GCC 4.8.2 和 MinGW。
【问题讨论】:
-
这几乎是未定义的行为。它之所以有效,是因为可能越界访问的内存的值为 0。
-
对于第二种情况,C和C++ guarantees the order of digit characters
-
您混淆了字符串和字符。
char始终是单个字符。 -
请选择 C 和 C++ 之一。
-
@FUZxxl 有区别吗?我对两者都感兴趣。