c - 在这个程序中,这一行是如何工作的 "flag[str[i]-' a']++;"有人能解释一下吗?

标签 c arrays

我对此行有疑问flag[str[i]-'a']++;这条线是如何工作的。 完整节目请访问http://www.programmingsimplified.com/c/source-code/c-anagram-program

char str[44];  
int flag[26],i=0;
gets(str);  
while(str[i]!='\0')
{
   flag[str[i]-'a']++; // How this line work
   i++;
}
i=0;
while(str[i]!='\0')
{
   printf("\n%d, %d ",str[i]-'a');
   i++;                        
}

最佳答案

小写“a”解析为十进制 97。减去 97 基本上允许您使用字符“a”、“b”、“c”等作为 flag 数组的索引。一旦完成,++ 就会递增数组中适当的字母槽。

因此,flag[0] 代表字母“a”,flag[1] 代表字母“b”,依此类推。

关于c - 在这个程序中,这一行是如何工作的 "flag[str[i]-' a']++;"有人能解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820664/

相关文章:

java - 允许空元素的 Fifo 缓冲区

php - 使用 PHP/jQuery 的 GET 传递数组

c - 套接字发送()和接收()不工作

c - 通过Cygwin运行exe文件.错误输出:Segmentation fault(core dumped)

javascript - 如何将数组转换为对象数组以及javascript中的id

ruby - 将元素插入 ruby​​ Hash 中的数组

javascript - 如果可以动态添加或删除输入字段,如何按键对从 HTML 表单发布的值进行分组

php - 文件在 PHP 中乱写

c - GLSL:片段着色器计数 'out' s

c - 使用 MinGW 和 CMake 编译 HDF5 时出错