-6

请告诉我语句的含义

printf("%s",single[*num-'1']);  

在这个声明中,[*num-'1'] 产生了什么索引号??..我不想要数字但想要解释。

4

3 回答 3

3

num被取消引用,并且'1',或 0x31,从结果值中减去。

于 2013-09-03T03:54:07.803 回答
3
printf("%s",single[*num-'1']);   

在此语句中,您正在计算二维数组索引 single[index] 的索引。并打印出来

如果 *num 等于 '3' 并且其 ascii 值为 51
'1' ascii 值为 49

单[51-49] 等于单[2]

现在您正在打印字符串 single[2]。

于 2013-09-03T03:57:02.223 回答
0

在 C 中,任何字符或 char 基本上都是由 ASCII 字符表示的整数类型,因此当您说 char x = 'a'; 存储的内容是整数时,即 a 的 ASCII 值即97.

换句话说,如果您也这样做,printf("%c",(char)97);您将获得作为字符的输出'a'

所以当你这样做时*num,你得到的是存储在指针 num上的值。下一部分是1从中减去……换句话说,1这里是一个字符,它被转换为一个整数,它49在 ASCII 表中的值为 。您可以在此处获取 ASCII 表参考

所以基本上你在写single[(some value) - 49]

让我们假设*num=60 因此我们有printf("%s",single[60-49]);等价于printf("%s",single[11]);

其余的取决于您如何使用变量single

我希望这有帮助。

于 2013-09-03T04:51:36.157 回答