
Views: 512
Оператор – 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 |
, |
запятая | Слева направо |
Группировка определяет порядок приоритета, в котором операторы вычисляются в дело, что есть несколько операторов одного уровня в выражении.
Это может быть интересно
Acquaintance with audio-bluetooth modules F-6888 (BK3254).
Views: 2269 Для проектов появилось необходимость познакомиться с недорогими модулями китайского производства, которые можно приобрести у нас в Украине и у китацев, на алиэкспрессе. Так как меня интересует не просто, …Гаджеты для домашней автоматики – Емкостной сенсор
Views: 1776 Управление светодиодным освещением – Сенсор емкостной. Данный гаджет предназначен для управления освещением где необходимо включением освещение сенсорным прикосновением. Датчик позволяет управлять светодиодной нагрузкой в виде модулей или светодиодных лент …HVLD модуль на примере PIC24FJ128GA204
Views: 756 HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что …WiFi ESP8266 ESP-202 (ESP-12F)
Views: 7857 Первое знакомство, сначала надо его купить… http://voron.ua/catalog/024404 Схема для подключения и тестирования По схеме ставим две кнопки, сброс и кнопку BT2, для перевода в режим обновления прошивки. Если надо сделать …Проект с использованием MCC часть 11
Views: 934 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …Бегущие огни (ch-bo-36)
Views: 2557 Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется …VU Meter Tower ART
Views: 1704 Стерео индикатор уровня аудио сигнала. Компактность и удобство проектирования устройств на светодиодах WS2812B, а также легкость реализации алгоритма родило идею созданию своей конструкции. В этом проекте я предоставлю …MCC – K42 – настройка модуля DMA
Views: 906 MCC – в версии v.3.95.0 и начиная ядра 4.85.0 конфигуратор предоставляет графический интерфейс для настройки модуля DMA. Для начала: Посмотреть какая версия МСС можно в закладке версии, если …ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302
Views: 2469 На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11 самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств …AD9833 – Programmable Waveform Generator – part two
Views: 1820 Прошло время и появилась тема, что-бы закончить проект AD9833 – Programmable Waveform Generator. Приехали печатные платы. В этот раз я печатные платы заказывал в https://jlcpcb.com/ делал это в …