减去c中的字母

JJJ*_*JJJ 1 c subtraction letters-and-numbers

我想知道如何在C中"减去字母":
我的意思是,我有两个字母,'a'和'c',我想执行'c' - 'a'='b',这是3-1 = 2.
如何在C中获得相同的行为?
我可以转换字母 - >数字,但如何管理字母表的有限长度谢谢.

twa*_*249 6

您可以将这些字母视为数字,然后再添加该字母'a'以将其标准化

所以

char c1 = 'a';
char c2 = 'c';
int diff = c2 - c1; //'c' - 'a' = 2
char ans = diff + 'a' - 1; //add 'a' and subtract 1 to normalize it
Run Code Online (Sandbox Code Playgroud)

如果你想要数字差异只需使用diff我的答案(ans将给你的信件).

这不会如此

'a' - 'b' 
Run Code Online (Sandbox Code Playgroud)

将导致-1(或之前的字符)

如果你想用包裹来处理底片,你必须检查它

int diff = c2 - c1;
char ans;
diff > 0 ? ans = diff + 'a' - 1 : 'z' + diff + 1; 
Run Code Online (Sandbox Code Playgroud)

这将给出:

  1. 'z' 对于 'b'-'c'
  2. 'y' 对于 'b'-'d'