- Автор темы
- #1
Выражения и операторы.
C# - это язык, который основывается на семействе "C"-подобных языков (С, C++, Java) поэтому многие его механизмы работают по схожему принципу, например, операторы. В С# существуют четыре основных класса операторов: арифметические, логические, операторы сравнения, побитовые, а также несколько дополнительных, которые используются для ряда специальных ситуаций.
Арифметические операторы
Все перечисленные выше операторы, кроме % работают точно так же как в C/C++. В C# оператор деления по модулю может применяться как к целочисленным данным, так и к значениям с плавающей точкой. В С/С++ этого делать нельзя было.
Операторы сравнения
Логические операторы
Результатом выполнения операторов сравнения и логических операторов являются значения типа bool(true/false).Например:
Пример показанный ниже это ошибка на этапе компиляции, так как в С# невозможно неявное преобразование от int к bool.
И Даже любимая логическая ошибка программистов на C++ для С# превратится в ошибку на этапе компиляции, по причине, указанной выше.
Данные особенности работы оператора условия будут подробно рассмотрены в следующем уроке.
Побитовые операторы
Как и в C/C++ они работают непосредственно с конкретными битами своих операндов. Операндами побитовых операторов могут быть только целочисленные значения.
Они выполняют те же операции, что и их булевы логические эквиваленты. Отличие состоит в том, что побитовые операторы работают с операндами на уровне битов, впрочем это информация не должна являться для вас новостью, так как вы уже сталкивались с ними в C/С++. Давайте рассмотрим пример их использования:
Операторы, переменные и литералы вместе образовывают выражения. Как и в С++ для улучшения читабельности программы выражения могут содержать символы табуляции и пробелы. Кроме того в выражениях можно использовать круглые скобки для повышения приоритета операторов внутри них.
C# - это язык, который основывается на семействе "C"-подобных языков (С, C++, Java) поэтому многие его механизмы работают по схожему принципу, например, операторы. В С# существуют четыре основных класса операторов: арифметические, логические, операторы сравнения, побитовые, а также несколько дополнительных, которые используются для ряда специальных ситуаций.
Арифметические операторы
Все перечисленные выше операторы, кроме % работают точно так же как в C/C++. В C# оператор деления по модулю может применяться как к целочисленным данным, так и к значениям с плавающей точкой. В С/С++ этого делать нельзя было.
Код:
using System;[/B]
[B]class Sample
{
public static void Main()
{
try{
int a=5,b=2;
double c = 19.67, d=3;
Console.WriteLine("Результат {0}%{1}={2}",a,b,a%b);
Console.WriteLine("Результат {0}%{1}={2}",c,d,c%d);
}
catch(Exception ex){
Console.WriteLine(ex.Message);
}
Console.Read();
}
}
Операторы сравнения
Логические операторы
Результатом выполнения операторов сравнения и логических операторов являются значения типа bool(true/false).Например:
Код:
using System;[/B]
[B]class Sample
{
public static void Main()
{
try{
int a=2,b=3;
if((a==2)&&(b==3)){
Console.WriteLine("Это видно на экране 1 !!!");
}
if(a>31){
Console.WriteLine("Это не видно на экране 2 !!!");
}
bool b1=false,b2=false;
if(b1^b2){
Console.WriteLine("Это не видно на экране 3 !!!");
}
b1=true;
b2=false;
if(b1^b2){
Console.WriteLine("Это видно на экране 4 !!!");
}
}
catch(Exception ex){
Console.WriteLine(ex.Message);
}
Console.Read();
}
}
Пример показанный ниже это ошибка на этапе компиляции, так как в С# невозможно неявное преобразование от int к bool.
Код:
int a = 7;[/B]
[B] if(a){ // Так нельзя в C#, а в С++ можно
Console.WriteLine("Ошибка !!!");
}
И Даже любимая логическая ошибка программистов на C++ для С# превратится в ошибку на этапе компиляции, по причине, указанной выше.
Код:
int a = 7;[/B]
[B] if(a=8){ // В этой строке ошибка на этапе компиляции
Console.WriteLine("Ошибка !!!");
}
Побитовые операторы
Как и в C/C++ они работают непосредственно с конкретными битами своих операндов. Операндами побитовых операторов могут быть только целочисленные значения.
Они выполняют те же операции, что и их булевы логические эквиваленты. Отличие состоит в том, что побитовые операторы работают с операндами на уровне битов, впрочем это информация не должна являться для вас новостью, так как вы уже сталкивались с ними в C/С++. Давайте рассмотрим пример их использования:
Код:
using System;
class Sample
{
public static void Main()
{
try{
int a = Convert.ToInt32(Console.ReadLine());
// Проверка на четность
if((a&1)==1)
Console.WriteLine("Нечетное значение");
else
Console.WriteLine("Четное значение");
int b = 2,c=5;
int f = b|c;
// На Экране 7
Console.WriteLine(f);
int kvadrat = b<<1;
int kub = b<<2;
Console.WriteLine("Квадрат "+b+" = "+kvadrat);
Console.WriteLine("Куб "+b+" = "+kub);
}
catch(Exception ex){
Console.WriteLine(ex.Message);
}
Console.Read();
}
}
Операторы, переменные и литералы вместе образовывают выражения. Как и в С++ для улучшения читабельности программы выражения могут содержать символы табуляции и пробелы. Кроме того в выражениях можно использовать круглые скобки для повышения приоритета операторов внутри них.