0

たとえば、必要に応じて文字を前後にシフトする関数をライブラリで見つけようとしています。

この関数が 'a' と前方にシフトする数値 3 を消費する場合、3 回シフトされ、出力は 'd' になります。

この関数が '5' と前方にシフトする数値 3 を消費する場合、3 回シフトされ、出力は '8' になります。

どうすればこれを達成できますか?

4

3 に答える 3

7

これを行うために関数を呼び出す必要はありません。文字に数字を直接追加するだけです。

例えば:

'a' + 3

に評価されます

'd'
于 2009-04-18T08:59:55.677 に答える
4

あなたが求めたものを考えると、これはそれを行います:

char char_shift(char c, int n) {
   return (char)(c + n);
}

あなたが何か他のことを意味している場合(おそらく「Z」+ 1 =「A」を意図している)、質問を書き直してください...

于 2009-04-18T08:58:04.543 に答える
2

Cでは、acharは整数型(、、intなどlong long int)です。

格納できる値の範囲が通常-128〜127、または0〜255に制限されていることを除いて、他の整数型と同じように機能しますが、これは実装によって異なります。

例えば:

char x = 3;
char y = 6;
int z;

z = x + y;
printf("z = %d\n", z); //prints z = 9

タイプ(通常は配列のchar一部として)は、テキストを格納するために最もよく使用され、各文字は数値としてエンコードされます。

文字と文字列の定数は便利です。マシンがASCII文字セット(今日ではほとんど普及している)を使用していると仮定すると、大文字のAは65としてエンコードされ、次のようになります。

char x = 'A';
char str[] = "AAA";

と同等です

char x = 65;
char str[] = {65, 65, 65, 0};

したがって、のようなもの'X' + 6は完全に理にかなっています-結果がどうなるかは文字エンコードによって異なります。ASCIIでは、whichiswhichと同等88 + 6です。94'^'

于 2009-04-18T09:47:21.523 に答える