请告诉我语句的含义
printf("%s",single[*num-'1']);
在这个声明中,[*num-'1'] 产生了什么索引号??..我不想要数字但想要解释。
num
被取消引用,并且'1'
,或 0x31,从结果值中减去。
printf("%s",single[*num-'1']);
在此语句中,您正在计算二维数组索引 single[index] 的索引。并打印出来
如果 *num 等于 '3' 并且其 ascii 值为 51
'1' ascii 值为 49
单[51-49] 等于单[2]
现在您正在打印字符串 single[2]。
在 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
。
我希望这有帮助。