Views: 525
Оператор – 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 |
, |
запятая | Слева направо |
Группировка определяет порядок приоритета, в котором операторы вычисляются в дело, что есть несколько операторов одного уровня в выражении.
Это может быть интересно
12-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA204Views: 965 Введение. 12-битный модуль A/D Converter является усовершенствованной версией 10-битного модуля, предлагаемого на некоторых устройствах PIC24. Оба модуля являются преобразователями, в своих ядрах, с последовательным приближением (SAR), в окружении …
USB K-L-line адаптерViews: 4775 USB K-L-line адаптер предназначен для связи персонального компьютера с диагностической шиной автомобиля – интерфейс ISO-9141. Этот проект предназначен для сборки недорого устройства с использованием специально для этой цели …
Контроллер управления светодиодным освещением с дистанционным управлениемViews: 2077 Все активнее светодиоды входят в нашу жизнь. Всё эффективнее становится светодиодное освещение. Всё ниже опускаются цены. Всё больше появляется возможностей получения сочных цветов, простоты в управлении. Всё чаще …
Altium Designer first projectViews: 548 Эта статья подразумевает, что у вас установлен и настроен Altium Designer как описано в статье Altium Designer my setup system and project structure. Обратите внимание! Библиотека постоянно обновляется, …
Бегущие огни (ch-bo-36)Views: 2623 Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется …
Одноканальный емкостной сенсор – AT42QT1012Views: 2496 Описание сенсора [wpdm_file id=242] Незаконченный проект, так-как сенсор не оправдал своего назначения, не рекомендую, просто выброшенные деньги. Особенности. • Количество сенсоров – один, режим переключения ( touch-on/touch-off ), а также программируемая …
Проект с использованием MCC часть 04Views: 1357 Теперь простого горения светиков нам не достаточно, заставим их мигать. Для начала используем первобытно простой способ, но достаточно простой. Используем функции delay, напрягаться откуда они берутся не будем, самое …
Customs codes for exportViews: 385 Митні коди (HS Code) для надсилання посилок за кордон. Для відправки товару за кордон на сьогодні необхідно зазначати митні коди. Часто визначення коду займає багато часу. Для …
Простой цифровой регулятор мощностиViews: 7844 Простой регулятор мощности с цифровой индикацией. Этот проект создан как обучающий, для ознакомления с основами построения сетевых регуляторов мощности. Устройства подобного типа можно использовать для управления освещением, скоростью …
Защита датчиков температуры DS18B20 от статического электричестваViews: 2010 Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, …