- Присваивание и Инициализация:
- Объявление:
тип имя;(например,int count;) - Присваивание:
имя = значение;(например,count = 10;) - Инициализация: Объявление и присваивание в одной строке.
тип имя = значение;(например,double price = 99.9;) - Множественное:
int x = 1, y, z = 5;(xиzинициализированы,yтолько объявлена). - Цепочечное присваивание:
a = b = c = 0;(присваивание справа налево). - Потеря точности: При присваивании вещественного числа целочисленной переменной дробная часть отбрасывается (не округляется):
int i = 5.9; // i будет равно 5.
- Объявление:
- Суффиксы Литералов: Указывают компилятору тип числового литерала.
fилиF:float(например,10.0f).lилиL:long intилиlong double(например,100L,3.14L).llилиLL:long long int(например,5000000000LL).uилиU:unsigned(можно комбинировать:10UL,50ULL).
- Присваивание символов:
- Используются одинарные кавычки
''. - Тип
charпредназначен для хранения символов. - Пример:
char grade = 'A';,char newline = '\n';
- Используются одинарные кавычки
- Буфер ввода (
stdin): При чтении со стандартного ввода (например, черезscanf,getchar), непрочитанные символы (включая пробелы,\n) остаются в буфере и могут быть прочитаны следующими операциями ввода. Это частая причина неожиданного поведения при смешивании разных функций ввода. - Арифметические операции:
- Типы операндов и результат: Перед выполнением операции происходит “обычное арифметическое преобразование” (integer promotion и conversion to common type). Меньшие целочисленные типы (
char,short) обычно повышаются доint. Если операнды разных типов, младший тип приводится к старшему (например,intкfloat,floatкdouble). - Примеры:
int+short→intfloat*double→doublefloat-int→float(илиdoubleв зависимости от контекста)int/int→int(целочисленное деление).
- Операции:
+Сложение.-Вычитание.*Умножение./Деление.%Остаток от деления (только для целочисленных типов).- Знак результата совпадает со знаком левого операнда (в C99 и новее):
-10 % 3 = -1,-10 % -3 = -1,10 % -3 = 1.
- Знак результата совпадает со знаком левого операнда (в C99 и новее):
- Инкремент
++и Декремент--:- Префиксная форма (
++count,--count): Сначала изменяет значение переменной, затем использует новое значение в выражении. - Постфиксная форма (
count++,count--): Сначала использует старое значение переменной в выражении, затем изменяет значение переменной.
- Префиксная форма (
- Типы операндов и результат: Перед выполнением операции происходит “обычное арифметическое преобразование” (integer promotion и conversion to common type). Меньшие целочисленные типы (
- Приведение типов (Type Casting):
- Явное преобразование значения одного типа в другой.
- Синтаксис:
(новый_тип)выражение - Пример (для получения вещественного результата деления):
int sum = 5; int count = 2; double average1 = (double)sum / count; // average1 = 2.5 (sum приводится к double) double average2 = sum / (double)count; // average2 = 2.5 (count приводится к double) double average3 = (double)sum / (double)count; // average3 = 2.5 // Ошибка: double average4 = (double)(sum / count); // average4 = 2.0 (сначала целочисленное деление)
- Операции сравнения: Возвращают
1(истина) или0(ложь) (типintв C,boolв C++).- -: Равно.
!=: Не равно.<: Меньше.>: Больше.<=: Меньше или равно.>=: Больше или равно.
- Подключение заголовочных файлов (
#include):<stdio.h>: Стандартный ввод/вывод (printf,scanf,getchar,putchar, etc.).<stdbool.h>: Типboolи константыtrue,false(в C99 и новее; в C++ встроенный).<math.h>: Математические функции (pow,sqrt,sin,cos, etc.).<stdlib.h>: Общие утилиты, включаяrand,srand,malloc,free,exit, etc.<time.h>: Функции для работы со временем (time, etc.).
- Логические операции:
- Битовые: Работают с отдельными битами целочисленных операндов.
~: Битовое НЕ (инверсия).~0b1010 -> ...11110101|: Битовое ИЛИ.0b1010 | 0b1100 -> 0b1110&: Битовое И.0b1010 & 0b1100 -> 0b1000^: Битовое исключающее ИЛИ (XOR).0b1010 ^ 0b1100 -> 0b0110
- Логические (не битовые): Работают с истинностью (0 - ложь, не 0 - истина) операндов. Возвращают
1или0.!: Логическое НЕ. Приоритет 3 (высокий).!0 -> 1,!5 -> 0.&&: Логическое И (вычисляется лениво). Приоритет 2.1 && 1 -> 1,1 && 0 -> 0.||: Логическое ИЛИ (вычисляется лениво). Приоритет 1 (низкий).0 || 1 -> 1,0 || 0 -> 0.
- Битовые: Работают с отдельными битами целочисленных операндов.
- Сдвиговые битовые операции:
<<: Сдвиг влево.x << nэквивалентноx * 2^n(для неотрицательныхx). Биты слева теряются, справа добавляются нули.>>: Сдвиг вправо.x >> nэквивалентноx / 2^n(целочисленное деление). Дляunsignedтипов слева добавляются нули. Дляsignedтипов результат зависит от реализации (арифметический или логический сдвиг).- Пример:
unsigned char x = 40; // 00101000 x = x >> 1; // 00010100 (20) x = x << 2; // 01010000 (80)
- Циклы:
while(Цикл с предусловием):while (условие) { // Операторы тела цикла } // Если условие ложно с самого начала, тело не выполнится ни разу.for(Цикл со счетчиком/инициализацией):for (инициализация; условие; итерация) { // Операторы тела цикла } // Пример: // for (int i = 0; i < 10; i++) { printf("%d ", i); }do-while(Цикл с постусловием):do { // Операторы тела цикла } while (условие); // Тело цикла выполнится хотя бы один раз, затем проверяется условие.
〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰