Есть ли способ увеличить на одного персонажа?

0

когда, например, вы увеличиваете переменную с помощью a для этого

for(k=1; k<21; k++)

правильно? и это означает, что последовательность будет повторяться до тех пор, пока k не будет равна 20, так что есть ли способ увеличить переменную символа? как a, b, c, d, e, f...? Благодарю.

дело в том, что я хочу создать таблицу, но с символами и с характером, увеличивающимся на единицу.

Я не пробовал ни с чем, так как я студент, я просто не знаю, как это сделать, или есть какая-нибудь команда, которая могла бы это сделать?

  • 1
    char c='a'; c++; будет работать
Теги:
variables
dev-c++

3 ответа

6
Лучший ответ

Конечно.

char k;
for (k = 'a'; k <= 'z'; ++k) { }
  • 1
    Это зависит от наличия набора символов, где символы 'a' 'z' являются последовательными, например, ASCII. Практически говоря, это вполне безопасно, хотя стандартные C и C ++ могут использоваться на машинах EBCDIC, и они могут гипотетически использоваться на будущих машинах с различными наборами символов. Кроме того, если вы говорите на языке, который использует немного другой алфавит (например, шведский), вы пропустите некоторые буквы этим методом.
  • 0
    В качестве альтернативы, другие языки не используют все буквы z, поэтому вы могли бы включить неправильные буквы.
1

Все символы имеют связанное числовое значение. Взгляните на следующую ссылку: http://www.ascii-code.com/

Вот фрагмент: вы увидите, что символ "А" в капитолии начинается с числового значения 65, а затем B, C, D и т.д. Все это еще 1.

65  101 41  01000001    A   &#65;       Uppercase A
66  102 42  01000010    B   &#66;       Uppercase B
67  103 43  01000011    C   &#67;       Uppercase C
68  104 44  01000100    D   &#68;       Uppercase D
69  105 45  01000101    E   &#69;       Uppercase E

Строчный регистр тот же, за исключением разного начального значения 97:

97  141 61  01100001    a   &#97;       Lowercase a
98  142 62  01100010    b   &#98;       Lowercase b
99  143 63  01100011    c   &#99;       Lowercase c
100 144 64  01100100    d   &#100;      Lowercase d
101 145 65  01100101    e   &#101;      Lowercase e

Поскольку символ действительно просто представляет это целочисленное значение ascii, вы можете сделать так, как Lashane указал в его комментарии и цикл, как вы бы целое.

0

char - (относительно узкий) целочисленный тип, и вы можете выполнять арифметику по значениям char же, как можете, для любого другого числового типа.

Но будь осторожен. Язык только гарантирует, что числовые значения '0', '1' ,..., '9' являются последовательными, так что это:

for (char c = '0'; c <= '9'; c ++) {
    // ...
}

будет перебирать десять десятичных цифр. Язык не дает никаких гарантий относительно писем, поэтому это:

for (char c = 'a'; c <= 'z'; c ++) {
    // ...
}

не гарантируется итерация по 26 строчным буквам.

На практике вы вряд ли столкнетесь с системой, в которой она не работает. Это происходит для любой системы, использующей систему символов на основе ASCII (включая Latin-1, Unicode и т.д.). Но мэйнфреймы IBM используют другой набор символов, EBCDIC, в котором буквы не имеют последовательных значений.

Если вам нужно перебирать заглавные буквы, вы можете либо не беспокоиться о том, что ваш код не переносится на 100%, либо вы можете писать код, который не зависит от их представлений:

const char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < sizeof alphabet; i ++) {
     const char c = alphabet[i];
     // ...
}

(Но даже это пропустит другие строчные буквы типа 'é' и 'ç').

  • 0
    И это работает только с узкими символами, то есть не будет работать с UTF-8. О блаженство i18n.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню