什么是* test ++ = count +' 0&#39 ;;做?

时间:2016-07-16 23:39:03

标签: c++

以下是我正在玩的一些示例代码:

#include <iostream>

int main() {

    char string[] = "hello";
    char *test = string;

    int count = 0;
    *test++ = count + '0';
    count++;
    *test++ = count + '0';

    std:: cout << test << std:: endl;

}

输出 llo

我知道这可能很简单,但我对这行代码感到困惑:*test++ = count + '0';。如果count = 0,添加'0'会做什么(添加零)?在评估*test++时,测试的位置首先递增,然后解除引用?究竟是什么分配的?

2 个答案:

答案 0 :(得分:2)

查看ASCII字符表。字符'0'到'9'是连续的。将{0}添加到count会将count(可能是0到9)转换为字符“0”到“9”。

*test++而言,反过来说,test首先被解除引用,然后它会增加。

总结一下,count,0到9之间的数字,字符'0'到'9',将其分配给*test,然后递增test

答案 1 :(得分:2)

char存储字符的数字编码,因此count + '0'只是两个数字的总和。实际上,数字0,...,9往往具有连续编码,因此将数字转换为相应字符的(编码)的快速破解是{{1} }。

digit + '0'被解析为*p++并且是&#34的常用习惯用法;获取*(p++)指向的内容,然后前进p&#34;。因此p*p++ = x存储在x最初指向的位置,之后p指向下一个位置。

(请记住,p的值是z++ 增加之前存储的值,而不是之后 之后的值递增)