2015-12-02 3 views
0

Я пытаюсь понять следующий код. Но мне было трудно найти что-либо, поэтому я хочу убедиться, что правильно понимаю. Поэтому, пожалуйста, поправьте меня, если я ошибаюсь.вычитание значения строк

string choice = txtProduct.Text.ToUpper(); 
char coordX = choice[0]; 
int indexX = coordX - 'A'; 

То, что я думаю, что происходит в том, что каждая строка букв (A, B, C и т.д ..) имеет значение так coordX - 'A'; просто вычитая эти значения.

Таким образом, если пользователь ввел «А» было бы «А» - «А», который будет 0 , если пользователь ввел «B», было бы «B» - «А», который будет 1. и т. д.

+0

У вас есть код для проверки? –

+0

http://www.asciitable.com/ – Maxqueue

+0

Обратите внимание, что «A» и «a» имеют разные значения. Если вы введете «A», вы получите 0. В чем проблема? – SimpleVar

ответ

1

Что на самом деле происходит то, когда вы запустите эту строку:

int indexX = coordX - 'A'; 

он бросает свой Char с номером ASCII, а затем вычитает ASCIIs и возвращает результат ...

Это, вероятно, более clrear:

int indexX = (int)coordX - (int)'A'; 

Итак: 'а' 65 и 'B' = 66 в ASCII, так е как вы получите результат, который вы видите.

+0

Не ASCII, Unicode/[UTF-16 единиц кода] (https://msdn.microsoft.com/en-us /library/system.char.aspx) (один или два кода в кодировке Unicode). –

1

Вы правы, Этот код возвращает вам индекс буквы в алфавите.

1

Да, U r правильный. Возможно, его написано с целью найти порядок следования первого персонажа в соответствии с ABCDEFGHIJKLMNOPQRSTUVWXYZ