Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » Вопросы по программированию на C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Открыть новую тему     Написать ответ в эту тему

Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопросы по программированию на C/С++

 
  • Справочники, книги
  • Выбор IDE (среды программирования)
     
    Постарайтесь дать как можно больше информации о возникшей проблеме - это в конце концов в ваших же интересах чтобы вам помогли.

    Решения конкретных задач собираются и обсуждаются в теме Задачи по C/С++ .

    Прежде чем просить помощи в задании...
    Если позарез надо и вы даже готовы заплатить

    Как правильно задавать вопросы, если вы хотите получить ответ.

    Полезные ссылки:
    C++(eng)

  • Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 13:37 06-05-2004 | Исправлено: AZJIO, 19:45 12-05-2014
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame
    Стандарт C определяет результат такого кода как "undefined behavior". То есть конкретный компилятор может обрабатывать в подобных случаях void* как char*, но не обязан делать это. Если нужен код, не привязанный к конкретному компилятору, надо следовать Стандарту.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 17:57 29-09-2017
    GeorgeMame

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
    Спасибо за исчерпывающее объяснение.

    Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 18:00 29-09-2017
    ktuBeF

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame
    Глупость вам сказали. В gcc указатель на void более чем легитимен, соотв-но в линухе все работает. У мелкософта же всегда свои тараканы, им ведь надо быть святее папы римского.

    Всего записей: 22 | Зарегистр. 21-11-2012 | Отправлено: 17:02 04-10-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ktuBeF

    Цитата:
    Глупость вам сказали. В gcc указатель на void более чем легитимен, соотв-но в линухе все работает. У мелкософта же всегда свои тараканы, им ведь надо быть святее папы римского.

    Что ж, смотрим Стандарт. Пункт 6.5.6-2:

    Цитата:
    For addition, either both operands shall have arithmetic type, or one operand shall be a pointer  to  an  object  type  and  the  other  shall  have  integer  type. (Incrementing  is equivalent to adding 1.)

    Проверяем, является ли void object  type. Стандарт, пункт 6.2.5-1:

    Цитата:
    The meaning of a value stored in an object or returned by a function is determined by the type of  the  expression used  to  access  it. (An identifier declared to be an object is the simplest such expression; the type is specified in the declaration of the identifier.)  Types are partitioned into object types (types that fully describe objects), function types (types that  describe  functions),  and incomplete  types (types  that  describe  objects  but  lack information needed to determine their sizes).

    И пункт 6.2.5-19:

    Цитата:
    The void type comprises an empty set of values; it is an incomplete type that cannot be completed.

    Резюме: void относится не к object types, а к incomplete  types, стало быть, Стандартом использование указателя на него в операциях сложения не разрешено.
    Теперь смотрим документацию по gcc. Находим пункт 6.23 "Arithmetic on void- and Function-Pointers".

    Цитата:
    In GNU C, addition and subtraction operations are supported on pointers to void and on pointers to functions. This is done by treating the size of a void or of a function as 1.

    А теперь читаем название раздела 6, в котором находится этот пункт. "Extensions to the C Language Family". То есть арифметические операции с указателями на void - это в чистом виде compiler-specific feature.
     
    Надеюсь, теперь вам ясно, кто именно сказал глупость?
     
    PS. Вы бы лучше не покидали флейм, там ваш уровень знаний не так в глаза бросается.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 20:19 04-10-2017 | Исправлено: Abs62, 20:21 04-10-2017
    ktuBeF

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Really, dude, you should learn some English prior to showing off and pointing other people mistakes. Now back to topic.
     

    Цитата:
    In GNU C, (GCC) addition and subtraction operations are supported on pointers to void and on pointers to functions.

     
    ...and that's exactly the point you just missed.

    Всего записей: 22 | Зарегистр. 21-11-2012 | Отправлено: 21:14 04-10-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ktuBeF

    Цитата:
    Really, dude, you should learn some English prior to showing off and pointing other people mistakes.

    И это говорит человек, который не в состоянии осознать смысл слова "Extensions"...

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:43 04-10-2017
    ktuBeF

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Очевидно, некоторым непросто осознать, что под гну сегодня пишется 90% сишного кода, и что именно гну на текущий момент является стандартом де-факто, а не всякие там ansi cхх, которых во времена К и Р и вовсе не было. Вот смайлики лепить, это да.

    Всего записей: 22 | Зарегистр. 21-11-2012 | Отправлено: 23:08 04-10-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ktuBeF
    Вот когда все остальные разработчики компиляторов начнут равняться на GNU и реализовывать все его расширения, тогда и можно будет говорить о стандарте де-факто. Пока же всё ровно так, как я сказал: хочешь, чтобы твой код собирался любым компилятором - пиши по Стандартам ISO/IEC. Не хочешь - пиши под конкретный компилятор и предавайся мриям про "стандарт де-факто". Считать реальное положение дел глупостью не более чем признак упоротости.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 23:32 04-10-2017
    GeorgeMame

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, какой доступный сишный транслятор поддерживает четверную точность.  Я пользуюсь интеловским транслятором, но четверную точность поддерживает только интеловский фортрановский транслятор. К тому же сия операция у них чрезвычайно медленная, т.к. они преобразуют long long double к другому формату. Возможно есть исходный код преобразования, но я толкового кода не нашел, хотя это был бы самый оптимальный вариант.

    Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 11:13 13-10-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame
    Gcc/MinGW вроде как поддерживает. Во всяком случае, библиотека libquadmath.a там есть.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 12:25 13-10-2017
    zedxxx

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wiki говорит что:

    Цитата:
    Ряд компиляторов, в том числе GCC (с версии 4.0, 2010), IBM XL (10.1), Intel, позволяет использовать числа точности "Quadruple" в программах на языках C/C++ и Fortran (например как тип __float128, long double, REAL*16), реализуя вычисления над ними программно, на 1-2 порядка более медленно, чем с точностью, поддерживаемой аппаратно.

    А аппаратная реализация есть только для специфических систем (об этом в английской wiki написано).
     

    Всего записей: 1505 | Зарегистр. 14-07-2008 | Отправлено: 12:27 13-10-2017
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame

    Цитата:
    какой доступный сишный транслятор поддерживает четверную точность.  Я пользуюсь интеловским транслятором
    ну так и пользуйся, в чём проблема? или в смысле доступный == неворованный? ;)
     
    Добавлено:
     
    кстати, если ты не ускорители или "протоны" расчитываешь, что ж это за задачи, в которых дабл-точности не хватает?

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 13:17 13-10-2017 | Исправлено: akaGM, 13:55 13-10-2017
    GeorgeMame

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zedxxx
     
    Да этот дурацкий формат чисел четверной точности, подогнанный искусственно под стандарт IEEE 754 мне нафиг не нужен: он как раз и работает  на два порядка медленней. Как я понял, реализации в формате long double - long double нигде ни в трансляторах, ни в библиотеках многократной точности нет: пришлось самому ручонками поработать - при реализации использовал книгу "Handbook of Floating-Point Arithmetic".

    Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 13:16 16-10-2017 | Исправлено: GeorgeMame, 13:18 16-10-2017
    zedxxx

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame
    По стандарту long double должен быть не меньше чем double, т.е. никаких требований по четверной точности он не предъявляет. В gcc есть тип __float128, который реализует четверную точность, плюс есть специальная версия математической библиотеки для работы с этим типом libquadmath.
     
    А ваша собственная реализация этого типа может содержать баги и не факт, что вычисления производятся быстрее, чем при использовании gcc-шного типа. Ради интереса, можете заняться профилированием и сравнением реализаций.

    Всего записей: 1505 | Зарегистр. 14-07-2008 | Отправлено: 14:13 16-10-2017
    GeorgeMame

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zedxxx
    Я имел в виду интеловский компилятор и четверную точность для long double (в формате long double - long double) именно под этот компилятор. У меня скорость умножения упала примерно в 7 раз.

    Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 22:53 16-10-2017
    Zatupitel



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame
    Если не ошибусь, но где-то в 2013-14 году представитель от Интела говорил, что 128 битные числа поддерживает Фортран с 2005 года (если не ошибусь). Поддрержку 128 бит в С++ не рассматривается и не планируется. Единственное, вроде добавили опцию к компилятору /Qlong-double для винды и этим увеличили размер long double до 80 бит (по умолчанию 64 бит).  

    Всего записей: 469 | Зарегистр. 31-08-2006 | Отправлено: 15:51 18-10-2017
    smartiom



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не уверен что пишу в подходящей теме, так что прошу прощения если спрашиваю не то.
    Я сам не программирую в С/С++, но есть идея/описание очень простого Win32 приложения и хотел бы попросить кого-нибудь кто шарит реализовать это приложение
     
    Могу ли я тут описать что требуется и если будут желающие то посмотрят? или есть специальная тема  для таких просьб?

    Всего записей: 109 | Зарегистр. 17-03-2006 | Отправлено: 19:30 18-10-2017 | Исправлено: smartiom, 02:17 19-10-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smartiom
    Объявления о работе для программистов

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:59 18-10-2017
    smartiom



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Не думаю что это подходит под название "Объявления о работе для программистов" ... тут на пол часа максимум наверное, да и не работодатель я и не предлагаю вакансию или проект какой-то. Просто есть идея об очень простой и возможно полезой утилиты и для других. Может даже уже есть такие, но найти не получается.

    Всего записей: 109 | Зарегистр. 17-03-2006 | Отправлено: 02:12 19-10-2017
    zedxxx

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smartiom
    Даже если работа занимает пол часа, это всё равно работа. И указанный выше топик вполне подходит под ваше объявление.

    Всего записей: 1505 | Зарегистр. 14-07-2008 | Отправлено: 10:08 19-10-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » Вопросы по программированию на C/С++


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru