![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Вот такая строчка. где "d" - число типа "double". Я думаю, что это приведение переменной "d" из типа double в тип unsigned int и потом а что потом...... :( |
|||
|
||||
fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: 2 Всего: 3 |
Возможно автор строк имел в виду округление числа путем приведения его к целому, а затем обратно к числу с двойной точностью (чтобы сравнить его с числом этого же типа). В конце концов эта строка имеет цель выяснить имеет ли число d дробную часть. Попробуй проверить концепцию, самому не охото.
|
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Хмм, ну типо понятно, а где я могу почитать о таком синтаксисе? :( Читал о приведении типов в разных книгах, - такого не встречал.
Вот, да и придется рассказывать, че к чему, а я толком и не понимаю. :( |
|||
|
||||
gosn1ck |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
строчка выдернута из условия? я бы согласился с fry, но результат равенства будет непредсказуем |
||||
|
|||||
zim22 |
|
||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
почему не предсказуем? я думаю, что результат всегда будет true. т.к. переменная в С/С++ является синонимом адреса или смещения, а не "меткой" объекта. следовательно независимо от того, в каком порядке будут вычислены аргументы оператора ==, сам оператор == отработает в последнюю очередь (т.е. тогда, когда преобразования над d будут завершены. а значит, левая и правая часть operator== будет указывать на одно и тоже значение. *** =хотя код доказывает, что я думаю неправильно ![]()
скорей всего компилятор создаёт временную переменную и поэтому их значения различны.
Это сообщение отредактировал(а) zim22 - 3.5.2009, 11:49 |
||||
|
|||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Только это не проверка на целостность.
Если d < 0 || d > (double)(unsinged int)(-1), результат будет false, даже если d - целое. Правильно будет d == floor(x) |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
да, это проверка на "unsigned int", с которым я уже наверное недели 2 парюсь. :(
А почему решил задать почти повторно вопрос, да потому, что при проверке , например несколько цифр и букв, это проходит проверку и пишет "что "введенное в строке число". полностью выглядит это так. В предыдущей моей теме так подсказали, но я решил разбирать все до мелочей, так как многого не понимаю. Вот и прошу помощи у вас. пасибо.
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
|
|||
|
||||
gosn1ck |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
а почему нельзя было бы условие поменять на if (0 <= d && d <= UINT_MAX && d == floor(d)) как говорили вы выше?)
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Тут ошибка: если нечего не ввели, то будет ответ 'да',
а если были пробелы до или после то 'нет'. но думаю ты сам это исправишь Добавлено через 1 минуту и 6 секунд
Можно |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
math64 - вы я смотрю серьезный человек.
![]() ![]() Я просто хочу разобраться, если я к примеру впихну в свою задачку ваш код и понесу показывать преподу, че он по вашему подумает? ![]() ![]() ![]() ![]() Спасибо, попробую с floor Добавлено через 4 минуты и 12 секунд Хмм, а почему например проскакивает "34,2" или "356ds" - "иф" пропускает, - и в конце выдает что эти числа типа "unsigned int" |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Мой код сочетает два варианта
1. Ручной разбор числа (USE_DOUBLE не определён) 2. Использование double. Но пользователь может ввести 1.0, это не unsigned int, а твоя программа ответит "да". Поэтому в любом случае нужно вводить строку и проверять, что введены только цифры. Преподавателю нужно нести один вариант, в котором #ifdef убран Добавлено через 3 минуты и 27 секунд
scanf() сканирует только число, всё что за ним оставляет в потоке. И использует английскую нотацию с десятичной точкой, а не запятой, как в России и Германии. |
|||
|
||||
gosn1ck |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
а что собственно было не понятно с самого начала? Порядок применения унарный операций и операции присваивания "справа налево", а всех остальных "слева направо" (Страуструп 80 - 81 страницы) другое дело что операции выполнялись не так как хотелось бы ![]() |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Мне непонятен был синтаксис. Я просто нигде не встречал такого синтаксиса. :(
|
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Может кто подсказать, почему от максимального значения типа всегда минусуется единица?
тоисить например максимальное значение 4 294 967 296, а вводить можно 4 294 967 295? Спасибо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |