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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    TeXpert



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    riial  
    Ясно же, это зависит от втоего багажа/склада ума. Подробности в студию! Думаю, легче всего математикам -- у кого с абстрактным мышлением проблем нет. Кстати, недавно тут пробегала книга, типа C++ для математиков, но на аглицком.  
    А так, посмотри книги Липпмана, да и самого Страуструпа.

    ----------
    Майкудук, Пришахтинск не предлагать!:)
    А на Пирогова приходит снова весенний гомон...

    Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 21:40 03-02-2008
    Bender_R



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    riial
    в добавление к сказанному TeXpert: как кик-старт, неплох Шилдт. Липпман, конечно, крут. Страуструпа на голодный желудок читать будет тяжко.

    Всего записей: 55 | Зарегистр. 03-01-2006 | Отправлено: 23:23 03-02-2008
    veronica b



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

    Цитата:
    Народ, словил непонятный глюк. Работоспособность проги зависит от порядка объявления переменных... Т.е.  
    float a;  
    int b;  
    работает, а:  
    int b;  
    float a;  
    валится с ошибкой Access violation... Просто меняю порядок следования двух соседних строк. Что это может быть? Может просто оставить рабочий вариант?  Но страшно что-то.

    При рабочем варианте переменная float a помещается по адресу, кратному 4 и её размер также 4 байта. Следующая переменная int b помещается, имеющая размер 2 байта помещается по правильному адресу. В нерабочем варианте 4-х байтная переменная помещается поадресу, не кратному четырем.
    Ваш компилятор 16 разрядный, то есть размер int равен двум. Если это так, то моя гипотеза верна!    

    Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 23:32 05-02-2008
    Bender_R



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

    Цитата:
    Ваш компилятор 16 разрядный, то есть размер int равен двум.

    а sizeof(float) точно равен 4 в этом случае?

    Всего записей: 55 | Зарегистр. 03-01-2006 | Отправлено: 00:02 06-02-2008
    veronica b



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

    Цитата:
    а sizeof(float) точно равен 4 в этом случае?

    Всегда! Смотрите IEEE Standard 754 for Binary Floating-Point Arithmetic.
     

    Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 10:13 06-02-2008
    stazher

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Hi all! Подскажите плз как в Visual C++ 2005 вывести строку s типа char в MessageBox. В VC++ 6 можно было написать MessageBox(s) или явно MessageBox("hallo"), в VC++ 2005 если явно, то пишется MessageBox(_T("hallo")) или MessageBox(L"hallo") чтоб преобразовать символы в wchar_t. А как неявно? MessageBox(_T(s)) или
    MessageBox(L(s)) не катит...

    Всего записей: 108 | Зарегистр. 16-03-2006 | Отправлено: 11:47 06-02-2008 | Исправлено: stazher, 11:49 06-02-2008
    WiseAlex



    Софтовых дел М...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    stazher
    сделать не-юникод проект

    Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 12:17 06-02-2008
    Bender_R



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    stazher
     
    использовать TCHAR, например.

    Код:
     
    TCHAR msg[] = _T("bender");
    MessageBox(msg);
     

    Всего записей: 55 | Зарегистр. 03-01-2006 | Отправлено: 12:27 06-02-2008
    stazher

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    WiseAlex
    Спасибо. Че-то такое подозревал.
     
    Получается реально нет функции строку char в wchar_t перегонять?
     
    Bender_R
    Так-то я могу! Или так
    wchar_t s[] = L"hallo";
    MessageBox(s);
     
    А если вместо "hallo" стоит абстрактная str, резалт работы других функций?

    Всего записей: 108 | Зарегистр. 16-03-2006 | Отправлено: 12:34 06-02-2008 | Исправлено: stazher, 12:52 06-02-2008
    Bender_R



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    stazher
     
    можно глянуть здесь
    TCHAR все-таки попробовать можно.

    Всего записей: 55 | Зарегистр. 03-01-2006 | Отправлено: 12:50 06-02-2008 | Исправлено: Bender_R, 12:52 06-02-2008
    akaGM

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

    да наверняка не в этом дело куда там и что помещается и по какому адресу...
    у него, небось, рядом с этими a и b стоит указатель, с которым он некорретно работал и писал много байт не по его адресу а прямо в него, тем самым затирал соседнюю память...
    затирается а или b, первой используется а -- программа ломается, а когда затирается b,
    то дело до неё может вообще не доходить...
    тоже гипотеза...
    но в её подтверждение говорит тот факт, что человек спросил и надолго исчез...
    т.е. он нашёл ошибку и дело было естественно не в порядке следования объявлений...

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 14:09 06-02-2008
    veronica b



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM, вся фишка в том, что такое было у меня летом 1997 года на 486 процессоре 100 МГц под 16 - разрядную MS-DOS на компиляторе Borland C++ 4.52. Только вместо float был у меня long. Как оказалось, я это запомнил на всю жизнь.

    Цитата:
    затирается а или b, первой используется а -- программа ломается, а когда затирается b, то дело до неё может вообще не доходить...  
    тоже гипотеза...  

    Ну, это слишком просто было бы.

    Цитата:
    но в её подтверждение говорит тот факт, что человек спросил и надолго исчез...  
    т.е. он нашёл ошибку и дело было естественно не в порядке следования объявлений...

    С этим не могу согласиться.
     

    Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 15:01 06-02-2008
    akaGM

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

    Цитата:
    Ваш компилятор 16 разрядный, то есть размер int равен двум.

    а я с этим не могу согласиться...
    у него компилятор 8-разрядный, он на Z-Спектруме сидит и размер int у него = sizeof(int)
    и моя вторая специальность -- аналитик-криминалист
    гы-гы

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 15:24 06-02-2008
    Abs62



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

    Цитата:
    Всегда! Смотрите IEEE Standard 754 for Binary Floating-Point Arithmetic.

    Говоря о языке, стоит опираться на стандарт именно языка, а не железа. А он говорит, что "The value representation of floating-point types is implementation-defined".

    Цитата:
    вся фишка в том, что такое было у меня летом 1997 года на 486 процессоре 100 МГц под 16 - разрядную MS-DOS на компиляторе Borland C++ 4.52.

    А можно взглянуть на пример кода, для которого подобные вещи критичны?

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

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 17:42 06-02-2008
    Bender_R



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

    Цитата:
    Говоря о языке, стоит опираться на стандарт именно языка, а не железа. А он говорит, что "The value representation of floating-point types is implementation-defined".

     
    вот и я вчера наткнулся в 3.9.1/8 на эту строчку.  
     
     
    Добавлено:
    stazher

    Цитата:
     
     Так-то я могу! Или так
    wchar_t s[] = L"hallo";
    MessageBox(s);
     
    А если вместо "hallo" стоит абстрактная str, резалт работы других функций?  

     
    что значит абстрактная str? тогда пробуйте использовать CString.

    Код:
     
        char b2[] = "bender (char)";
        TCHAR b3[] = _T("bender (tchar)");
     
        CString msg2 = CString(b2);
        MessageBox(msg2);
     
        msg2 = b3;
        MessageBox(msg2);
     

    Всего записей: 55 | Зарегистр. 03-01-2006 | Отправлено: 18:03 06-02-2008
    veronica b



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

    Цитата:
    а я с этим не могу согласиться...  
    у него компилятор 8-разрядный, он на Z-Спектруме сидит и размер int у него = sizeof(int)  
    и моя вторая специальность -- аналитик-криминалист  
    гы-гы

    Незнаю вашу первую специальность, но точно не программист. Компиляторов 8-и разрядных не бывает, они просто могут работать на 8-и разрядной машине. Разрядность компилятора определяется разрядностью типа данных int, а она бывает только или 16 или 32 бита!
    гы-гы - это у вас врожденное?
    Abs62, есть реализации языка Си вообще без плавающей точки, но если в языке есть плавающая точка, то только по этому стандарту. Начиная с 1985 года, все компьютеры в мире придерживаются этого  IEEE Standard 754 стандарта!

    Цитата:
    А можно взглянуть на пример кода, для которого подобные вещи критичны

    Он же привел пример кода!
     

    Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 18:27 06-02-2008
    Abs62



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

    Цитата:
    Начиная с 1985 года, все компьютеры в мире придерживаются этого  IEEE Standard 754 стандарта!

    И почему тогда это не зафиксировано в стандарте языка?

    Цитата:
    Он же привел пример кода!

    Где? Одного объявления переменных недостаточно для понимания сути происходящего.

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

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:09 06-02-2008
    veronica b



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

    Цитата:
    И почему тогда это не зафиксировано в стандарте языка?  

    Вы считаете, что я это должен знать?

    Цитата:
    Где? Одного объявления переменных недостаточно для понимания сути происходящего.  

    В данном случае достаточно. Вспомните условие проблемы, только при перестановки объявлений проявлялся сбой. Все остальное не менялась.
     

    Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 19:34 06-02-2008
    akaGM

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

    Цитата:
    Он же привел пример кода!
    В данном случае достаточно

    в данном случае Abs62 просит пример _твоего_ кода, приводящего к такого рода проблеме...
     

    Цитата:
    Незнаю вашу первую специальность, но точно не программист

    точно... -- математик, специальность мат.физика, если так интересно...

    Цитата:
    гы-гы - это у вас врожденное?

    да, зато пишу не на албанском...

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 19:48 06-02-2008 | Исправлено: akaGM, 20:02 06-02-2008
    Abs62



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

    Цитата:
    Вы считаете, что я это должен знать?

    Согласен на гипотезу.

    Цитата:
    В данном случае достаточно. Вспомните условие проблемы, только при перестановки объявлений проявлялся сбой. Все остальное не менялась.

    Так вот меня и интересует, каким же должно быть всё остальное, чтобы при перестановке объявлений проявлялся сбой. Или это должно аукаться в любом коде?

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

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:48 06-02-2008
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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