Views: 524
Оператор – sizeof()
Этот оператор имеет один параметр, который может быть либо тип, либо сама переменная и возвращает размер в байтах этого типа или объекта:
a = sizeof (char);
В этом примере переменной (а) будет присвоено значение 1 потому, что char однобайтовый тип.
Значение, возвращаемое функцией sizeof, является константой, поэтому всегда определяется до выполнения программы.
Например, массив
static unsigned char txferTxBuff[256]; temp = sizeof (txferTxBuff); // возвращает переменной temp размер массива 256.
а конструкция
temp1 = sizeof (*txferTxBuff); // возвращает размер элемента массива в байтах
Если chat то он всегда будет 8 бит или 1 байт, если int то тут будет зависит от используемого микроконтроллера. Например компилятор XC8 вернет значение 2 байта, а компилятор XC32 вернет значение 4 (байта). Это значит, что один элемент в разных системах занимает разное количество байт. Массив static unsigned int txferTxBuff[256] описанный в программе для PIC32 будет занимать в памяти 1024 байта.
конструкция
temp = sizeof (txferTxBuff) / sizeof (*txferTxBuff);
вычисляет именно размер массива.
Приоритет операторов
При написании сложных выражений с несколькими операндами, мы можем иметь некоторые сомнения, относительно какой операнд вычисляется сначала, а какой позднее. К примеру, в этом выражении:
a = 5 + 7 % 2
Мы может сомневаться, если оно действительно означает:
a = 5 + (7 % 2) // with a result of 6, или a = (5 + 7) % 2 // with a result of 0
Правильный ответ является первым из двух выражений с результатом 6. Существует установленный порядок с приоритетом каждого оператора, а не только арифметики из них (те, чьи предпочтение исходят от математики), но и для всех операторов, которые могут возникнуть в C++. От наиболее низкого приоритета, порядок будет следующим:
|
Уровень |
Оператор |
Описание |
Группировка |
| 1 |
:: |
scope | Слева направо |
| 2 |
() [] . -> ++ — dynamic_cast static_cast reinterpret_cast const_cast typeid |
Postfix | Слева направо |
| 3 |
++ — ~ ! sizeof new delete |
Унарный (префикс) | Справа налево |
|
* & |
косвенного обращения и ссылки (указатели) | ||
|
+ – |
унарный оператор знак | ||
| 4 |
(type) |
приведение типов | Справа налево |
| 5 |
.* ->* |
указатель на член | Слева направо |
| 6 |
* / % |
Мультипликативная | Слева направо |
| 7 |
+ – |
добавка | Слева направо |
| 8 |
<< >> |
сдвиг | Слева направо |
| 9 |
< > <= >= |
реляционные | Слева направо |
| 10 |
== != |
равенство | Слева направо |
| 11 |
& |
побитового И | Слева направо |
| 12 |
^ |
Побитовое исключающее или | Слева направо |
| 13 |
| |
побитовое OR | Слева направо |
| 14 |
&& |
Логическое И | Слева направо |
| 15 |
|| |
Логическое или | Слева направо |
| 16 |
?: |
Условное | Справа налево |
| 17 |
= *= /= %= += -= >>= <<= &= ^= |= |
назначение | Справа налево |
| 18 |
, |
запятая | Слева направо |
Группировка определяет порядок приоритета, в котором операторы вычисляются в дело, что есть несколько операторов одного уровня в выражении.
Это может быть интересно
Development of temperature control and management systemsViews: 236 Catcatcat Electronics Пошта для контакту e-mail: catcatcat.electronics@gmail.com
Стабилизатор тока для светодиодов SN3350Views: 2757 SN3350 ближайший аналог ZXLD1350 Как собрать готовый вариант, читайте во второй части – http://catcatcat.d-lan.dp.ua/stabilizator-toka-na-sn3350-chast-2/ 40V драйвер светодиодов с внутренним ключом SN3350 – импульсный понижающий преобразователь, разработанный для того, чтобы эффективно управлять одним или …
Moving average – скользящее среднееViews: 2440 Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания …
Бегущие огни (ch-bo-36)Views: 2607 Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется …
Простой цифровой вольтметр ch-c3200Views: 2637 В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип …
DS18B20 – удаленный контроль температурыViews: 3238 Контроль температуры с использованием датчиков температуры DS18B20 и платы ILLISSI-4B-09-primum Проект позволяет подключать к плате ILLISSI-4B-09-primum до 16 датчиков температуры DS18B20, удаленных более 300 метров, и выводить информацию …
NeoPixel LED и PIC18Views: 1901 Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, …
Проект с использованием MCC часть 09Views: 1048 Эта часть будет посвящена созданию практического проекта управления освещение. Тех задание: Два выхода управления ШИМ – светодиодным освещением. Две кнопки управления, каждая кнопка управляет, своим каналом, логика самая …
NS108-5050-16bit от NewstarViews: 689 Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность …
Проект с использованием MCC часть 06Views: 1460 Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. …