Арифметические операции
Компьютеры почти всегда что-то считают. Собственно само слово computer означает вычислитель. В этой области даже самый слабенький процессор намного превосходит человеческий мозг.
static void Main(string[] args)
{
int a = 5;
int b = 2;
System.Console.WriteLine("a = " + a + ", b = " + b);
int result = a + b;
System.Console.WriteLine("Сложение, a + b = " + result);
result = a * b;
System.Console.WriteLine("Умножение, a * b = " + result);
result = a / b;
System.Console.WriteLine("Деление, a / b = " + result + " a и b - целые числа, деление только нацело");
double resultDouble = a / b;
System.Console.WriteLine("Деление, a / b = " + resultDouble + " все равно что-то не так...");
double aDouble = 5;
resultDouble = aDouble / b;
System.Console.WriteLine("Деление, a / b = " + resultDouble);
System.Console.ReadLine();
}
Почему произошло столь странное недоразумение с дробным числом во второй раз? Все дело в том, что внутри одной строки мы выполнили сразу несколько операций. А в каком порядке они выполняются? В порядке приоритета. И у оператора присваивания =, который записывает данные в переменную, этот приоритет один из самых низких
Сначала выполнилось деление двух целочисленных переменных a и b и только после этого целый результат деления записался в дробную переменную doubleResult.
Таблица 1 Приоритеты операций
Приоритет | Категория | Операции | Порядок |
Первичные | (expr); x.y; f(x); a[x]; x++; x new; sizeof(t); typeof(t); checked(expr); unchecked(expr) | Слева направо | |
Унарные | + - ! ~ ++x --x (T)x | См. выше | |
Мультипликативные (Умножение) | - * / % | См. выше | |
Аддитивные (Сложение) | + - | См. выше | |
Сдвиг | << >> | См. выше | |
Отношения, проверка типов | < > <= >= is as | См. выше | |
Эквивалентность | == != | См. выше | |
Логическое И | & | См. выше | |
Логическое исключающее ИЛИ (XOR) | ^ | См. выше | |
Логическое ИЛИ (OR) | | | См. выше | |
Условное И | && | См. выше | |
Условное ИЛИ | || | См. выше | |
Условное выражение | ? : | Справа налево | |
Присваивание | = *= /= %= += -= <<= >>= &= ^= |= | См. выше |
Небольшое отступление:
В дальнейших примерах кода подразумевается, что вы самостоятельно вставите их внутрь
static void Main(string[] args) |
{ |
} |