|
Cpp check ругается, можно ли так писать? |
|
|
|
Feb 6 2018, 12:34
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 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 Точно, так нельзя писать?
|
|
|
|
|
 |
Ответов
|
Feb 6 2018, 20:00
|

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

|
Не считайте упрямством, хочу разобраться. Постинкремент переменной работает после того, как ее использовали. Следовательно, после того, как будет записано вычисленное выражение. Логично? Цитата(AnatolyT @ Feb 6 2018, 21:41)  Если SigRe это массив, может следует к нему обращаться как к массиву. Можно и к массиву. Предполагаю, что для ARM это будет работать так же легко и быстро, как и по указателю. Но я люблю указатели. Деды так завещали. Цитата(jcxz @ Feb 6 2018, 19:33)  Я думаю, что ViKo никогда ещё не включал оптимизацию. И не заглядывал при этом в асм  Первое высказывание исключает второе. Если учесть, что оба неверные, следует, jcxz = трепач.
|
|
|
|
|
Feb 6 2018, 20:24
|

Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|