преобразование типов в выражениях

Серым цветом выделен левый операнд.

Бирюзовым цветом выделен правый операнд.

Синим цветом выделены ячейки таблицы, на пересечении которых, типы данных не нужно приводить явно.

Желтым цветом выделены ячейки таблицы, на пересечении которых, типы данных можно не приводить явно. Но если в этом есть необходимость, то можно привести явно.

Красным цветом выделены ячейки таблицы, на пересечении которых, типы данных нужно приводить явно.

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

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Program {
  •  public static int Main() {
  •   int res = 0;
  •   int left = 5; //левый операнд
  •   char right = 'a'; //правый операнд
  •   /*выражение не нужно приводить к типу int явно*/
  •   res = left + right;
  •   Console.WriteLine(res);
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
102

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Program {
  •  public static int Main() {
  •   float res = 0;
  •   float left = 5.55f; //левый операнд
  •   float right = 5.55f; //правый операнд
  •   /*по умолчанию компилятор приводит выражение к типу double
  •   если есть необходимость, то можно привести выражение к типу float явно*/
  •   res = (float)(left * right);
  •   Console.WriteLine(res);
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
30,8025

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Program {
  •  public static int Main() {
  •   int res = 0;
  •   int left = 5; //левый операнд
  •   uint right = 10; //правый операнд
  •   /*выражение нужно явно приводить к типу int*/
  •   res = (int)(left + right);
  •   Console.WriteLine(res);
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
15

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Program {
  •  public static int Main() {
  •   decimal res = 0;
  •   decimal left = 5.55m; //левый операнд
  •   float right = 5.55f; //правый операнд
  •   /*правый операнд нужно явно привести к типу левого операнда*/
  •   res = left * (decimal)right;
  •   Console.WriteLine(res);
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
30,8025