Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Отвлекитесь, эмбеддеры! Отвлеченные темы - обсудить проблемы тепловой смерти вселенной, или просто пиво. Этот раздел - для отдыха.

 
Опции темы
Непрочитано 01.08.2018, 16:27  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Что-то я перестал понимать Си.

То-ли у меня крыша поехала от ковыряния STM32 , то-ли погода повлияла , но я запутался ...
Решил сегодня отвлечься и попробовать обновить в голове Си (бывает, что замыливается глаз, и если годами пишешь, то как-то некоторые тонкости ускользают , становятся неочевидными...) .... Решил " обновиться " по унарным операциям , как самым простейшим .
Набираю в гугеле Си унарные операции ...получаю ссылки .
Первая-же - Прелестная - то,что хотел - -,+,~ есть .
Унарный минус - зашибись. Я никогда не пользовался , даже не задумывался , а тут код одной программки ковырял - возникли вопросы , как это Действительно работает ..Прекрасно . (Не актуально , так как опять задумываться над знаковыми- беззнаковыми ... проще на минус единицу умножить- более наглядно, хоть видно что хоть осознанно делаешь )
Унарный плюс . Хммм. Забавная штуковина. В частности, говорящая НЕКОТОРЫМ компиляторам просто не оптимизировать скобки. При float очень полезно,если большие с малыми в одном операторе-выражении нужно в определённом порядке складывать умножать не теряя точность. Примем к сведению, тем более оказывается знал , но забылось. Принимается!! (Не актуально .. ради этого нужно все компиляторы в уме держать ...проще через промежуточные переменные сделать)
И ТУТ Я ПОПАЛ!!!! - в качестве примера выражение f=а*+(b*с) - которое расшифровывается как "будет гарантированно вычисляться следующим образом: результат сложения b и с будет прибавлен к а" ..
Чего я только не делал - все ссылки начал подряд просматривать...ВЕЗДЕ ,во всех подряд , с разными вариациями , в разной форме ИМЕННО ТАК расшифровывается это выражение .
Пока я в осадке.
Так-же как и с "~" оттуда-же ... short x=987 ; x=~x; значит x равняется -987.(я-бы согласился на -988 )
(Я понимаю откуда ноги растут ... но весь интернет этим заполнен - не могу не верить )

Последний раз редактировалось OlegNZH; 01.08.2018 в 17:49.
OlegNZH вне форума  
Непрочитано 01.08.2018, 16:52  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

OlegNZH, я все эти непонятки обычно в пошаговом отладчике или ассемблерном листинге проверяю…
А там уже от результата никуда не денешься
Если вариант проверить на нескольких компиляторах под разные процессоры получится уже система…
К проверке можно будет несколько вариантов оптимизации добавить…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 01.08.2018, 17:28  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,901
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

Сообщение от OlegNZH Посмотреть сообщение
ВЕЗДЕ ,во всех подряд , с разными вариациями , в разной форме ИМЕННО ТАК расшифровывается это выражение .
Ну так все друг у друга и переписывают, с реврайтингом, чтобы не пессемизировали поисковики, или без. А что переписывают - сами не понимают.

А в итоге - "Celebrate! Not celibate!"
AR_Favorit вне форума  
Непрочитано 01.08.2018, 17:36  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

Может отсканировано с бумажной книжки.
Но не объясняет -987 вместо -988.
Если только ручная правка затем кем-то не слишком задумчивым.
pambaru вне форума  
Непрочитано 01.08.2018, 17:47  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

OlegNZH, в дополнение - таки стоило бы изначально прикоснуться к первоисточнику от Кернигана и Ритчи, а потом уже верить написанному в других местах сети. Потом можно прочитать материалы по реализации языка в документации по конкретному компилятору и среде.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 01.08.2018, 17:53  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

Сообщение от pambaru Посмотреть сообщение
Может отсканировано с бумажной книжки.
Но не объясняет -987 вместо -988.
Если только ручная правка затем кем-то не слишком задумчивым.


Да нееее!!! Там этот пример был под номером 1 - т.е логично предположить
что к унарному минусу относился .. Так , что Тильда - это как-бы унарный минус должен был быть ... Они-же ПОХОЖИ!
PS Причём в одной из статей ТАМ ДЕЙСТВИТЕЛЬНО МИНУС!!!
PPS Но вместо тильды в следующем примере стоит ТОЖЕ МИНУС!

Последний раз редактировалось OlegNZH; 01.08.2018 в 18:47.
OlegNZH вне форума  
Непрочитано 01.08.2018, 17:57  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

Сообщение от mike-y-k Посмотреть сообщение
OlegNZH, в дополнение - таки стоило бы изначально прикоснуться к первоисточнику от Кернигана и Ритчи, а потом уже верить написанному в других местах сети. Потом можно прочитать материалы по реализации языка в документации по конкретному компилятору и среде.
Ув. mike . Тема называется - отвлекитесь , эмбеддеры!
OlegNZH вне форума  
Непрочитано 01.08.2018, 18:05  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

Сообщение от mike-y-k Посмотреть сообщение
OlegNZH, в дополнение - таки стоило бы изначально прикоснуться к первоисточнику от Кернигана и Ритчи, а потом уже верить написанному в других местах сети. Потом можно прочитать материалы по реализации языка в документации по конкретному компилятору и среде.
Вопрос спорный ... Мне делать больше нечего? Как искать как конкретный компилятор относится к тому-же унарному плюсу? Мне проще по-раздельности перемножить . Да ...скорость упадёт , но если я вдруг код, учитывающий тонкости одного бездумно перенесу в другой , то неизвестно , что в итоге получится.
PS Тем более , что если речь идёт про float , где введённая лишняя переменная в быстродействии роли не сыграет(условно).
PPS Но вообще-то пост про другое ... Чему нас учат в инетах ... (А всего-лишь , хотел за хлебушком сходить .. ...тьфу ...про унарные глянуть , чё пишут ..)

PPPS Что-бы не быть голословным - не поленился (скучно мне ) собрал эти самые первые ссылки , которые поисковики на "унарные " выдаёт , гди и фигурируют эти примеры ( и это на первых страницах поиска) )

http://wm-help.net/lib/b/book/180766606/68
http://mylektsii.ru/14-40261.html
https://it.wikireading.ru/35116
http://oplib.ru/informatika/view/224...arnye_operacii
https://studfiles.net/preview/1466535/page:30/

Последний раз редактировалось OlegNZH; 01.08.2018 в 18:51.
OlegNZH вне форума  
Непрочитано 01.08.2018, 22:09  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

OlegNZH, отвлекаться можно по разному
А вот учиться в сети стоит с большой осторожностью - можно на внешне вполне вразумительные объяснения от апологетов свободной энергии нарваться…
Приведённые материалы вполне тянут на эрудицию и смекалку.

А уж если серьёзно - изучение нюансов матчасти только повышает качество, особенно в узких местах

После первой ссылки читать дальше не стал - испугался за величину смещения крыши , хотя там и говорится про особенности работы разных компиляторов для той записи…
С первоисточниками как-то сильно спокойнее.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…

Последний раз редактировалось mike-y-k; 01.08.2018 в 22:14.
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
stalkernet (03.08.2018)
Непрочитано 02.08.2018, 14:03  
MaxiMuz79
Гражданин KAZUS.RU
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 529
Сказал спасибо: 74
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: Что-то я перестал понимать Си.

Выдержка из библии Кенигана и Ричи. Язык Си.
Цитата:
15.2. Унарные операции

Выражение с унарными операциями группируется справо на-
лево.
Унарное-выражение:
* выражение
& L-значение
- выражение
! Выражение
\^ выражение
++ L-значение
-- L-значение
L-значение ++
L-значение --
(имя-типа) выражение
SIZEOF выражение
SIZEOF имя-типа

Унарная операция * означает косвенную адресацию: выраже-
ние должно быть указателем, а результатом является L-значе-
ние, ссылающееся на тот объект, на который указывает выраже-
ние. Если типом выражения является "указатель на...", то ти-
пом результата будет "...".
Результатом унарной операции & является указатель на
объект, к которому ссылается L-значение. Если L-значение
имеет тип "...", то типом результата будет "указатель на
...".
Результатом унарной операции - (минус) является ее опе-
ранд, взятый с противоположным знаком. Для величины типа
UNSIGNED результат получается вычитанием ее значения из 2**N
(два в степени N), где N-число битов в INT. Унарной операции
+ (плюс) не существует.
MaxiMuz79 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестал работать таймер ivst1980 Источники питания и свет 21 28.11.2013 09:18
ПДУ от ТВ перестал работать Bagrat Видеотехника 77 06.12.2011 18:30
Sony KV-M2540D, после попыток включиться, перестал включаться вообще. Sezar59 Видеотехника 6 24.08.2011 01:18
контроллер перестал определяться Камилл Микроконтроллеры, АЦП, память и т.д 20 16.04.2010 09:05
Перестал програмироватяься ATmega8 BodyZ Микроконтроллеры, АЦП, память и т.д 13 20.02.2007 16:05


Часовой пояс GMT +4, время: 09:02.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot