когда, например, вы увеличиваете переменную с помощью a для этого
for(k=1; k<21; k++)
правильно? и это означает, что последовательность будет повторяться до тех пор, пока k не будет равна 20, так что есть ли способ увеличить переменную символа? как a, b, c, d, e, f...? Благодарю.
дело в том, что я хочу создать таблицу, но с символами и с характером, увеличивающимся на единицу.
Я не пробовал ни с чем, так как я студент, я просто не знаю, как это сделать, или есть какая-нибудь команда, которая могла бы это сделать?
Конечно.
char k;
for (k = 'a'; k <= 'z'; ++k) { }
'a'
'z'
являются последовательными, например, ASCII. Практически говоря, это вполне безопасно, хотя стандартные C и C ++ могут использоваться на машинах EBCDIC, и они могут гипотетически использоваться на будущих машинах с различными наборами символов. Кроме того, если вы говорите на языке, который использует немного другой алфавит (например, шведский), вы пропустите некоторые буквы этим методом.
Все символы имеют связанное числовое значение. Взгляните на следующую ссылку: http://www.ascii-code.com/
Вот фрагмент: вы увидите, что символ "А" в капитолии начинается с числового значения 65, а затем B, C, D и т.д. Все это еще 1.
65 101 41 01000001 A A Uppercase A
66 102 42 01000010 B B Uppercase B
67 103 43 01000011 C C Uppercase C
68 104 44 01000100 D D Uppercase D
69 105 45 01000101 E E Uppercase E
Строчный регистр тот же, за исключением разного начального значения 97:
97 141 61 01100001 a a Lowercase a
98 142 62 01100010 b b Lowercase b
99 143 63 01100011 c c Lowercase c
100 144 64 01100100 d d Lowercase d
101 145 65 01100101 e e Lowercase e
Поскольку символ действительно просто представляет это целочисленное значение ascii, вы можете сделать так, как Lashane указал в его комментарии и цикл, как вы бы целое.
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];
// ...
}
(Но даже это пропустит другие строчные буквы типа 'é'
и 'ç'
).
char c='a'; c++;
будет работать