JJJ*_*JJJ 1 c subtraction letters-and-numbers
我想知道如何在C中"减去字母":
我的意思是,我有两个字母,'a'和'c',我想执行'c' - 'a'='b',这是3-1 = 2.
如何在C中获得相同的行为?
我可以转换字母 - >数字,但如何管理字母表的有限长度?谢谢.
您可以将这些字母视为数字,然后再添加该字母'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)
这将给出:
'z' 对于 'b'-'c''y' 对于 'b'-'d'