Бінарні, унарні (інкрементація) арифметичні операції - функція sizeof

Операції називаються бінарними. якщо в них бере участь два оператора. Начебто тут все зрозуміло, але раз у нас в операції беруть участь два операнда, то з'являється цікава проблема:

А чи можна виробляти арифметичні бінарні операції з різними типами даних? І якщо, да то що буде виходити на виході операції?

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

int a = 4, b = 8;
printf ( ".", a + b); / * Функцію printf ми розглянемо пізніше, поки вам треба знати, що вона виводить значення на екран. В результаті ми отримаємо значення 12 int -ового типу * /

Тепер давайте розберемося з бінарними арифметичними операціями змінних з різним типом даних. Для початку наведу трійку прикладів, а після вже узагальню всю картину цілком:

#include
#include

int main (int argc, char * argv [])
int a = 5; // 2 байта
float b = 3; // 4 байта
double c = 2; // 8 байт
char d = 'a'; // 1 байт

printf ( ". \ n", sizeof (a + b)); / * 4 байта, отже тип float * /
printf ( ". \ n", sizeof (b + c)); / * 8 байт, отже тип double * /
printf ( ". \ n", sizeof (a + d)); / * 2 байта, отже тип int * /

функція sizeof

Функція sizeof повертає кількість байт, які пам'ять виділяє під змінну. З прикладу прекрасно видно, що при додаванні змінних різних типів, при виході виходить змінна більшого з типів. Так, з приводу типу char: символи, які він зберігає, мають цілочисельний код, тому при додаванні ніяких проблем не виникає.

Ще залишився один незрозумілий момент. Начебто б операції додавання, множення, ділення і віднімання все знають. А що ж це за диво таке - знаходження залишку? Найкраще звернутися до прикладів:

int a = 5, b = 2;
a = a% b; // Значення а дорівнюватиме 1

Тобто відбувається традиційне розподіл, тільки результатом буде залишок від ділення. Ось і всі хитрощі цього оператора.

унарні операції

Збільшення числа на одиницю.

int i = 6;
i ++; // інкрементація
i = i + 1; // еквівалентна інкрементація

Зменшення числа на одиницю.

int i = 6;
i--; // декрементація
i = i - 1; // еквівалентна декрементаціі

Завжди, коли є можливість використовувати інкрементація або декрементацію, то користуйтеся нею, так як це збільшує продуктивність вашої програми.

Але є ще дуже важливий момент. Інкрементація і декрементація буває префиксной і постфіксной:

int a = 5;
printf ( ".", ++ a); // Виведе 6
printf ( ".", a ++); // Виведе 5

Отже, префиксная форма спочатку збільшує, а потім вже виконує такі дії, а Постфіксний форма навпаки - спочатку виконає дії, а після збільшить значення.

На цьому закінчуємо урок. Завдань не буде, так як, прочитавши цей урок кілька разів, все повинно бути гранично ясно.