Какие операторы есть в C# и почему % это не проценты?
Разбираюсь с операторами C#. С + - * / понятно, а вот наткнулся на % и думал, что это проценты, но получается какая-то ерунда. Ещё не до конца понял разницу между = и ==.
int a = 7;
int b = 2;
Console.WriteLine(a / b); // ожидал 3.5, а вышло 3
Console.WriteLine(a % b); // тут вообще 1
Можно по-человечески, какие операторы бывают и что делает каждый?
2 ответа
Давай по группам.
Арифметические:
+ - * /— сложение/вычитание/умножение/деление,%— это остаток от деления (а не проценты).7 % 2= 1, потому что 7 = 2*3 + 1.
Про твой 7 / 2 == 3: оба числа целые (int), поэтому деление целочисленное, дробная часть отбрасывается. Чтобы получить 3.5, сделай хотя бы одно число дробным:
Console.WriteLine(7.0 / 2); // 3.5
double x = 7;
Console.WriteLine(x / 2); // 3.5
Сравнения (всегда дают bool):
== (равно), != (не равно), >, <, >=, <=.
Важно: = — это присваивание (кладём значение в переменную), а == — проверка на равенство. Их легко перепутать.
Логические:
&&— И (оба условия истинны),||— ИЛИ (хотя бы одно),!— НЕ (отрицание).
int age = 20;
bool canEnter = age >= 18 && age < 65;
Console.WriteLine(canEnter); // True
Ещё пригодятся ++ и -- (увеличить/уменьшить на 1) и сокращения +=, -=, *=.
Маленькая, но болезненная ловушка: && и || вычисляются «лениво». В выражении a != 0 && b / a > 1 правая часть не выполнится, если a == 0 — это спасает от деления на ноль. Если написать одиночный &, то выполнятся обе части всегда. Для обычных условий почти всегда нужны двойные && / ||.