数组[1-'a']如何在c编程中工作?

时间:2016-08-07 14:39:16

标签: c

我正在制作一个程序,在c中找到两个字符串的字谜。但我最终在一份声明中

array[1-'a']++;  

我不太清楚该声明的工作情况。 那里的任何人帮助我..!

3 个答案:

答案 0 :(得分:5)

'a'的ASCII值为971 - 97-96array[-96]相当于*(array - 96)。如果array - 96是有效地址,则array[1-'a']++;将使地址array - 96的值递增1,否则取消引用它将调用未定义的行为。

答案 1 :(得分:4)

'a'是一个字符常量,它是一个整数,它是a的字符代码(如果使用ASCII代码,则为97)。

array[1-'a']相当于*((array)+(1-'a'))1-'a'元素('a'-1元素之后的array元素)++指向的元素。 array[1-'a']++ 递增,相当于添加1. array[1-'a'] postfix increment ,因此此表达式的计算结果为{{{ <}> 递增之前。

可能的用法示例:

#include <stdio.h>
#include <limits.h>

int main(void) {
    int data[SCHAR_MAX] = {0};
    int* array = &data['a'];
    printf("%d\n", data[1]); /* 0 will be printed */
    array[1-'a']++;
    printf("%d\n", data[1]); /* 1 will be printed */
    return 0;
}

答案 2 :(得分:3)

array[1-'a']++;  
  • a是ASCII 97.
  • 1 - 97-96
  • array[-96],如果是有效地址,则在96
  • 的基地址之前是array个元素
  • ++增加其操作数,或array[-96]

然而,这段代码的正确性非常可疑。