реклама на сайте
подробности

 
 
> Cpp check ругается, можно ли так писать?
ViKo
сообщение Feb 6 2018, 12:34
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Имею массив из float и указатель на него.

Код
  pSigRe = SigRe;
  for (uint32_t i = FFT_N; i--; ) {
    *pSigRe++ = log2f(*pSigRe) * 15.0515;
  }


При проверке cpp check выдает ошибку.
Кратко: Expression '*pSigRe++=log2f(*pSigRe)*15.0515' depends on order of evaluation of side effects
Сообщение: Expression '*pSigRe++=log2f(*pSigRe)*15.0515' depends on order of evaluation of side effects
Точно, так нельзя писать? w00t.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Feb 6 2018, 20:00
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Не считайте упрямством, хочу разобраться. Постинкремент переменной работает после того, как ее использовали. Следовательно, после того, как будет записано вычисленное выражение. Логично?

Цитата(AnatolyT @ Feb 6 2018, 21:41) *
Если SigRe это массив, может следует к нему обращаться как к массиву.

Можно и к массиву. Предполагаю, что для ARM это будет работать так же легко и быстро, как и по указателю. Но я люблю указатели. Деды так завещали.

Цитата(jcxz @ Feb 6 2018, 19:33) *
Я думаю, что ViKo никогда ещё не включал оптимизацию. И не заглядывал при этом в асм biggrin.gif

Первое высказывание исключает второе. Если учесть, что оба неверные, следует, jcxz = трепач. biggrin.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Feb 6 2018, 20:24
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(ViKo @ Feb 6 2018, 23:00) *
Не считайте упрямством, хочу разобраться. Постинкремент переменной работает после того, как ее использовали. Следовательно, после того, как будет записано вычисленное выражение. Логично?

Нет, не так.
Постинкремент переменной не определён внутри выражения.
Рассмотрим пример:
Код
int m[10];
int i = 0;
m[i++] = i; // неопределенное поведение
m[i] = i++; // неопределенное поведение

По стандарту операция присваивания не является точкой следования, соответственно неизвестно, в каком порядке будут вычислены стороны выражения.
Рассмотрим первый пример. Для него порядок вычисления может быть одним из следующих:
Код
1) m[0] = 0; // i == 1
2) m[0] = 1; // i == 1


Аналогично и в Вашем случае.

Сообщение отредактировал Arlleex - Feb 6 2018, 20:47
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Cpp check ругается   Feb 6 2018, 12:34
- - V_G   Цитата(ViKo @ Feb 6 2018, 22:34) Точно, т...   Feb 6 2018, 12:56
|- - ViKo   Цитата(V_G @ Feb 6 2018, 15:56) Мне непон...   Feb 6 2018, 13:00
|- - megajohn   проверьте так pSigRe = SigRe; for (uint32_t i =...   Feb 6 2018, 13:18
|- - ViKo   Цитата(megajohn @ Feb 6 2018, 16:18) пров...   Feb 6 2018, 13:35
- - Kabdim   Цитатаолучить адрес (попутно инкрементированной) п...   Feb 6 2018, 13:30
- - _pv   Цитата(ViKo @ Feb 6 2018, 19:34) Сообщени...   Feb 6 2018, 13:34
|- - jcxz   Цитата(_pv @ Feb 6 2018, 15:34) на *pSigR...   Feb 6 2018, 14:00
|- - ViKo   Цитата(jcxz @ Feb 6 2018, 17:00) Из первы...   Feb 6 2018, 14:08
|- - jcxz   Цитата(ViKo @ Feb 6 2018, 16:06) По сущес...   Feb 6 2018, 14:09
|- - ViKo   Цитата(jcxz @ Feb 6 2018, 17:09) И...? Ка...   Feb 6 2018, 14:12
|- - jcxz   Цитата(ViKo @ Feb 6 2018, 16:12) Вы прика...   Feb 6 2018, 14:19
- - jcxz   Цитата(ViKo @ Feb 6 2018, 14:34) Кратко: ...   Feb 6 2018, 13:53
|- - ViKo   Цитата(jcxz @ Feb 6 2018, 16:53) Это вопр...   Feb 6 2018, 13:55
- - ViKo   Ладно. Значит, нужно найти точное толкование, когд...   Feb 6 2018, 14:22
|- - jcxz   Цитата(ViKo @ Feb 6 2018, 16:22) Ладно. З...   Feb 6 2018, 14:45
- - x893   Цитата(jcxz @ Feb 6 2018, 17:19) Нет. Не ...   Feb 6 2018, 14:26
|- - ViKo   Цитата(x893 @ Feb 6 2018, 17:26) Пример н...   Feb 6 2018, 14:30
|- - Сергей Борщ   QUOTE (ViKo @ Feb 6 2018, 16:30) Так, жду...   Feb 6 2018, 14:36
||- - ViKo   Цитата(Сергей Борщ @ Feb 6 2018, 17:36) В...   Feb 6 2018, 14:39
||- - jcxz   Цитата(ViKo @ Feb 6 2018, 16:39) Здесь то...   Feb 6 2018, 14:43
||- - haker_fox   QUOTE (ViKo @ Feb 6 2018, 22:39) Здесь то...   Feb 6 2018, 14:44
|- - SSerge   Цитата(ViKo @ Feb 6 2018, 21:30) Так, жду...   Feb 6 2018, 14:44
|- - ViKo   Цитата(SSerge @ Feb 6 2018, 17:44) Изволь...   Feb 6 2018, 14:57
|- - Сергей Борщ   QUOTE (ViKo @ Feb 6 2018, 16:57) Это уж д...   Feb 6 2018, 15:48
|- - jcxz   Цитата(ViKo @ Feb 6 2018, 16:57) Это уж д...   Feb 6 2018, 16:33
- - haker_fox   QUOTE (ViKo @ Feb 6 2018, 20:34) Точно, т...   Feb 6 2018, 14:41
- - haker_fox   Первый пример я бы записал так: CODE for (uin...   Feb 6 2018, 14:46
- - Arlleex   Довольно интересная тема в Си, связанная с базовым...   Feb 6 2018, 15:54
- - Den64   Цитата(ViKo @ Feb 6 2018, 15:34) Имею мас...   Feb 6 2018, 16:41
|- - Arlleex   Цитата(Den64 @ Feb 6 2018, 20:41) Должно ...   Feb 6 2018, 17:00
- - x893   А если вдруг запустит на двух- и более процессорно...   Feb 6 2018, 16:47
- - DASM   Хорошо вас тут читать.. но.. мое мнение если можно...   Feb 6 2018, 17:23
|- - jcxz   Цитата(DASM @ Feb 6 2018, 19:23) Я лично ...   Feb 6 2018, 17:58
|- - Arlleex   Цитата(DASM @ Feb 6 2018, 20:23) Хорошо в...   Feb 6 2018, 17:58
- - AnatolyT   Имеем следующее pSigRe = SigRe; for (uint32_t i...   Feb 6 2018, 18:41
|- - jcxz   Цитата(ViKo @ Feb 6 2018, 22:00) Не счита...   Feb 6 2018, 21:37
- - ViKo   Компилятор использовал следующую команду для запис...   Feb 6 2018, 20:49
|- - Arlleex   Цитата(ViKo @ Feb 6 2018, 23:49) Компилят...   Feb 6 2018, 21:01
- - ViKo   Мог бы... Но не сделал. А сделал так, как мне и бы...   Feb 7 2018, 05:10
- - V_G   Я думаю, если ассемблер данного конкретного контро...   Feb 7 2018, 05:22
|- - jcxz   Цитата(V_G @ Feb 7 2018, 07:22) Я думаю, ...   Feb 7 2018, 11:43
- - Arlleex   Цитата(ViKo @ Feb 7 2018, 08:10) Вопрос, ...   Feb 7 2018, 05:41
- - x893   А еще правильнее написать авторам cppcheck и задат...   Feb 7 2018, 06:03
|- - Сергей Борщ   QUOTE (x893 @ Feb 7 2018, 08:03) А еще пр...   Feb 7 2018, 07:46
- - mcheb   Решил проверить в GCC Код uint16_t i; float SigRe...   Feb 7 2018, 06:16
- - ViKo   CODE**********************************************...   Feb 7 2018, 09:53
|- - haker_fox   ViKo, учтите замечания анализатора. Зачем вам писа...   Feb 7 2018, 14:22
- - Arlleex   Привел код. Скомпилировал на C++ Builder 2010 и в ...   Feb 7 2018, 10:19
- - ViKo   Усё, таперича проникся. Просвещен. Спасибо всем не...   Feb 7 2018, 10:50
- - ViKo   Зависит от типа оптимизации. Пусть хоть весь цикл ...   Feb 7 2018, 11:58
- - Kabdim   Удивляет что половина вроде как "опытных...   Feb 7 2018, 12:22
|- - Arlleex   Цитата(Kabdim @ Feb 7 2018, 16:22) Удивля...   Feb 7 2018, 13:20
|- - DASM   Цитата(Kabdim @ Feb 7 2018, 15:22) Удивля...   Feb 7 2018, 14:14
|- - Kabdim   Цитата(DASM @ Feb 7 2018, 17:14) Многие о...   Feb 7 2018, 15:04
|- - DASM   Цитата(Kabdim @ Feb 7 2018, 18:04) Сравни...   Feb 7 2018, 15:23
- - Kabdim   Собственно к тем кто не пишет никаких претензий не...   Feb 7 2018, 15:28
- - DASM   Согласен   Feb 7 2018, 15:32
- - sigmaN   Только на элкетрониксе могут написать еще страницы...   Feb 7 2018, 17:25
|- - jcxz   Цитата(sigmaN @ Feb 7 2018, 19:25) Как, к...   Feb 7 2018, 17:55
|- - DASM   Цитата(sigmaN @ Feb 7 2018, 20:25) Только...   Feb 7 2018, 19:04
- - ViKo   Мне страниц не жалко. Пусть хоть 33 будет. Не знат...   Feb 7 2018, 18:26


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th August 2025 - 21:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01441 секунд с 7
ELECTRONIX ©2004-2016