C ++中'2'和“2”的区别是什么?

时间:2014-11-05 08:03:16

标签: c++

我有问题要理解' 2'和" 2"。我知道' 2' " 2"是char *,但令我困惑的是,如果我这样做:

String input = "123";
int number = input[1]; //extract 2 from input

但它给了我这个数字等于50.如何转换" 2"到50?这是我所困惑的。谁知道为什么?谢谢!

4 个答案:

答案 0 :(得分:1)

'2'是一个字符文字。它占用一个字节,其内部ASCII码为50.所以在本声明中

int number = input[1]; 

将字符input[1]的值分配给数字。

考虑例如

char c = '2';

std::cout << ( int )c << std::endl;

"2"是一个字符串文字。它的类型为const char[2],因为它包含终止零。

你可能不会写

char c = "2";

但你可以写

char c = "2"[0];
std::cout << ( int )c << std::endl;

你会得到与上面相同的结果。

答案 1 :(得分:0)

当您使用input[1]时,您正在提取输入字符串的第二个字符。在这种情况下,'2'。然后,您将此char转换为int变量,从而导致字符'2'的ASCII转换。数字50是ASCII字符'2'

的转换

答案 2 :(得分:0)

你的代码做了什么,它在字符串中提取第二个元素,这是char&#39; 2&#39;并隐式将其强制转换为整数。结果是字符&#39; 2&#39;的ASCII码。值为50。

答案 3 :(得分:0)

机器不了解人类的概念,如&#34; S&#34;,&#34; 4&#34;,&#34; red&#34;,&#34; small&#34;。他们只知道数字,因此所有这些概念必须用数字表示。当工程师开始将人类概念转移到机器世界时,他们需要为他们分配标准编号。例如,数字0用于表示字符串缓冲区的结尾。数字10用于表示换行符,这使得文本在几行中断。人类的概念&#34; 4&#34; (相反,它的图形表示)被分配了数字50.所有这些数字到图形符号的分配称为ASCII表。

然后,您的代码将获得符号&#34; 4&#34;的数字表示,即50。