Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

4.4. Выражения с символьными операндами

Если символьное значение "символьное значение" (символ или переменная

типа char) используется в арифметическом выражении, то C# автоматически

выполняет его преобразование из типа char в числовое значение его кода. То же

справедливо и в случае, когда в выражении с арифметическими операциями

участвуют несколько символьных переменных или констант.

В качестве иллюстрации сказанного рассмотрим следующую программу:

// 04_03.cs - выражения с символьными операндами

using System;

class Program

{

static void Main()

{

char c = 'c', h = '\u0068', a = '\x61', r = '\u0072';

Console.WriteLine("" + c + h + a + r);

Console.WriteLine(c + h + a + r);

}

}

Результат выполнения программы:

char

41

4

В программе символьные переменные с (десятичный код 99), h (десятичный

код 104), a (десятичный код 97), r (десятичный код 114), представляют,

соответственно, символы 'c', 'h', 'a', 'r'. При первом обращении к методу WriteLine()

знак + играет роль операции конкатенации, аргумент (выражение) ""+c+h+a+r

преобразуется к строковому виду и имеет значение строки "char". Связано это с

правилом, по которому в выражении строка + символ правый операнд приводится к

типу строки, а затем выполняется конкатенация двух строк. Таким образом, вначале

""+'c' превращается в строку "c", затем выражение "c"+'h' преобразуется в "ch" и т.д.

При втором обращении к методу WriteLine() аргумент c + h + a + r воспринимается

как арифметическое выражение. Знак + играет роль операции сложения. Коды

символов обрабатываются как целые числа, их сумма равна 414. Это число

автоматически преобразуется в строку "414" (т.к. аргумент метода WriteLine()

должен иметь строковый тип), и эта строка выводится на консоль.

Как отмечено, при объяснении правил вычисления значения аргумента метода

WriteLine(),

результат

выражений:

строка+символ

и

символ+строка

это

конкатенация строки и строкового представления символа. В следующей программе

конкатенация "конкатенация" строки и символа выполняется вне метода WriteLine.

// 04_04.cs - строки и символы

using System;

class Program

{

static void Main()

{

char simb = 'b'; // десятичный код = 98

string line = "simb = " + simb;

Console.WriteLine(line);

line = simb + " = simb";

Console.WriteLine(line);

line = simb + simb + " = 2 simb";

Console.WriteLine(line);

}

}

Результат выполнения программы:

simb = b

b = simb

196 = 2 simb

Обратите внимание на выражение simb+simb+" = 2simb". В соответствии с

правилами ассоциации для операции + оно вычисляется так: (simb+simb)+ "= 2simb".

В скобках символы "ведут себя" как целочисленные значения, и их сумма 196 затем

преобразуется в строку.

Хотя мы уже применяли строки в виде строк-литералов и в примерах

определяли строку как переменную типа string, но более подробное рассмотрение

строк и их взаимоотношений с другими типами языка C# необходимо перенести

дальше в раздел, специально посвящённый строкам.

Унарные операции "операции:унарные операции ++ и --" ++ и –– изменяют

значение

кода

символьной

переменной,

однако,

она

не

превращается

в

целочисленную величину, а сохраняет тип char. В то же время, суммирование

символьной переменной с единицей приводит к получению целочисленного

значения. Сложение и вычитание символьных переменных также приводят к

соответствующим операциям над их кодами с формированием целочисленных

результатов. Следующая программа иллюстрирует приведенные правила.

// 04_05.cs - выражения с символами и строками

using System;

class Program

{

static void Main()

{

char cOld = 'a', cNew = cOld;

Console.Write("В последовательности ");

Console.Write(++cNew); // выводит 'b'

Console.Write(++cNew); // выводит 'c'

Console.Write(++cNew + " "); // выводит 'd'

Console.WriteLine(cNew - cOld + " буквы");

}

}

Результат выполнения программы

:

В последовательности bcd 3 буквы

Чтобы получить символ с нужным числовым значением кода, нужно

применить операции явного приведения типов.

Например, так:

char ch = (char)94; // значение ch – символ '^'

Для обратного преобразования (из char, например, в uint) достаточно

автоматического приведения типов:

uint cod = ch; // значением cod будет 94.

Соседние файлы в папке CSBasicCourse2ndedPodbelsky