2

Cで「文字を引く」方法を知りたい:
つまり、「a」と「c」の2つの文字があり、「c」-「a」=「b」を実行したいのですが、これは3-1です。 =2。
Cで同じ動作を得るにはどうすればよいですか?文字->数字
を変換できますが、アルファベットの限られた長さを管理するにはどうすればよいですか?ありがとうございました。

4

2 に答える 2

7

文字を数字として扱い、文字を追加し'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

数字の違いが必要な場合はdiff、私の回答から使用してansください(手紙が届きます)。

これは回り込まないので

'a' - 'b' 

-1(または a の前の文字) になります

ラップでネガを処理したい場合は、チェックする必要があります

int diff = c2 - c1;
char ans;
diff > 0 ? ans = diff + 'a' - 1 : 'z' + diff + 1; 

これにより、次のようになります。

  1. 'z'為に'b'-'c'
  2. 'y'為に'b'-'d'
于 2012-05-28T03:08:30.183 に答える
0

これ見てる?

char a1,a2,a3;
a3 = a1 - a2 + 'a';
于 2012-05-28T03:08:41.010 に答える