Оператор – sizeof() – Приоритет операторов

Views: 521


Оператор – 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

,

запятая Слева направо

Группировка определяет порядок приоритета, в котором операторы вычисляются в дело, что есть несколько операторов одного уровня в выражении.


Это может быть интересно


  • Часы + Календарь + Термометр + …Часы + Календарь + Термометр + …
    Views: 2792 Часы + Календарь + Термометр + Индикатор влажности + Секундомер + Дистанционное управление на ИК лучах (пульты на RC-5 протоколе) + Автоматическая регулировка яркости + Возможность вывода данных через USB, …
  • Тестирование модуля генератораТестирование модуля генератора
    Views: 964  Тестирование модуля генератора Настройка, запуск и проверка рабочей частоты на примере PIC18F26K40. PIC18F26K40 Чтобы понять из-за чего зависит производительность микроконтроллера просто надо понять как работает его задающий тактовый …
  • ch-светомузыка и AK4113ch-светомузыка и AK4113
    Views: 1495 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …
  • Бегущие огни (ch-bo-36)Бегущие огни (ch-bo-36)
    Views: 2584 Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется …
  • Одноканальный емкостной сенсор – AT42QT1012Одноканальный емкостной сенсор – AT42QT1012
    Views: 2426 Описание сенсора [wpdm_file id=242] Незаконченный проект, так-как сенсор не оправдал своего назначения, не рекомендую, просто выброшенные деньги. Особенности. • Количество сенсоров – один, режим переключения ( touch-on/touch-off ), а также программируемая …
  • Сумеречное релеСумеречное реле
    Views: 1634 Реле управления освещением, датчик день-ночь – одним словом фотореле для управления освещением или формирования сигнала для системы умный дом о понижении или повышении освещенности относительно заданного уровня. Реле выполнено по классической схеме, конденсаторный блок питания, от сети переменного тока …
  • Стабилизатор тока для светодиодов SN3350Стабилизатор тока для светодиодов SN3350
    Views: 2742 SN3350 ближайший аналог ZXLD1350 Как собрать готовый вариант, читайте во второй части – http://catcatcat.d-lan.dp.ua/stabilizator-toka-na-sn3350-chast-2/ 40V  драйвер светодиодов с внутренним ключом  SN3350 – импульсный понижающий преобразователь, разработанный для того, чтобы эффективно управлять одним или …
  • Интерактивные LedИнтерактивные Led
    Views: 565 Тема проекта   продолжение следует…. Это может быть интересно
  • Дифференциальный терморегуляторДифференциальный терморегулятор
    Views: 4111 Дифференциальный терморегулятор ch-3020 Назначение. Ch-c3020 представляет собой дифференциальный терморегулятор. Основное назначение солнечные системы горячего водоснабжения, а также вентиляционные системы управление притоком свежего воздуха. Контроллер позволяет работать пяти режимах. …
  • Проект с использованием MCC часть 12-1Проект с использованием MCC часть 12-1
    Views: 1079 В настоящее время без визуализации информации уже не интересно. Поэтому научимся выводить информацию на дисплей. Для это возьмет простенький OLED RET012864E/REX012864J я такой приобретал в фирме “Гамма-Украина”, описание можно …




Поделись этим!