我有问题要理解' 2'和" 2"。我知道' 2' " 2"是char *,但令我困惑的是,如果我这样做:
String input = "123";
int number = input[1]; //extract 2 from input
但它给了我这个数字等于50.如何转换" 2"到50?这是我所困惑的。谁知道为什么?谢谢!
答案 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。