| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Как правильно понять и где прочитать? |
| Автор: OutlawZ 16.8.2012, 20:45 | ||
Часто в книгах да и примерах кода видел такую запись:
как написано это мол b имеет тип HBITMAP а o тип TObject. Где можно прочитать про это? так как не понимаю зачем писать HBITMAP если можно просто написать b. Вопрос в том где можно прочитать про эти типы и как с ними работать? Заранее спасибо. |
| Автор: LeonidPr 17.8.2012, 09:08 | ||
Я так понимаю что вы программите в C++ Builder? Про HBITMAP почитайте в Win32 Programmer's reference, раздел Bitmaps. Про TObject почитайте в Borland C++ Builder help раздел Visual Component Library Reference -> About Object and Component Help -> Alphabetical Object and Component listing -> TO -> TObject Это в пятом билдере. в вашей версии разделы возможно отличаются, но думаю найдете что где. А затем, что C/C++ не являются языками с динамической типизацией и тип переменной нужно указывать при её объявлении. |
| Автор: NoviceF 17.8.2012, 09:20 | ||
Попробуйте объявить любую переменную, не указав её тип - компилятор не даст, тут то же самое. |
| Автор: wester 18.8.2012, 00:23 | ||
Встречный вопрос - как компилятор поймет с каким типом надо работать, если его(тип) не объявить ? |
| Автор: catherham 18.8.2012, 16:42 | ||||||
Из контекста использования.
Значит тип переменной строка. Даже С++ поддерживает похожее объявление переменной (в новом стандарте C++11).
Здесь тип переменной int |
| Автор: 500mhz 18.8.2012, 18:18 |
| DWORD рулит ))) |
| Автор: wester 20.8.2012, 09:56 | ||||||||
catherham
Но в первой строке, будет неизвестно с каким типом работать.
Да, это так. Но вопрос изначально поднимался о том, как компилятор узнает о типе на этапе объявления. Хотя может стоить юзать void* и не будет таких вопросов ? |
| Автор: catherham 20.8.2012, 13:06 | ||
На этапе объявления у нас просто текст Компилятор определит тип на этапе компиляции и подставит необходимый код. auto Variable = 10; и int Variable = 10; В итоге даст одинаковый машинный код. Это синтаксический сахар, чтобы не писать: длиииииииииииииииииииииииииииииииииииноеИмяТипа переменная = функция(1); А писать auto переменная = функция(1); Я кэп |
| Автор: wester 20.8.2012, 15:29 | ||||||
Да вот не определит он тип, если у него не будет каких либо данных о нем. Не сможет, да и не должен.
соглашусь, но попробуйте написать auto Variable; Variable = 10; думаю, ошибка будет в первой строке
Годами юзали #define и еще столько же будем юзать. Таки где выгода слова auto в данном случае ? |
| Автор: catherham 20.8.2012, 15:57 | ||||||
Согласен, должен быть контекст
Все верно, но в PHP такое будет работать, в c++ конечно нет
Годами использовали телеги, зачем нам машины? Так быстрее Если у вас в файле используется 10 таких типов? Можно писать и макросы, но с auto удобнее. Во всех современных языках такая фича есть. Теперь и в с++ |
| Автор: wester 20.8.2012, 16:32 | ||||||
catherham
хоть в чем - то пришли к компромиссу
10 типов с очень длинными названиями ? Ну что могу сказать... повезло. Обычно их много больше.
Таки некорректно. Телеги это прошлое, и от них отказались именно из - за того, что они не удовлетворяют нынешним запросам. С auto же непонятно. Я могу написать auto d = 1.0 Но. это будет long или double ? |
| Автор: catherham 20.8.2012, 17:07 | ||||
Вы наверно имели ввиду float. long это вроде целое. Не знаю, я на с++ мало что писал, но в c#, например, это будет double. Пошукал, нашел ответ на ваш вопрос
Так что в с++ это тоже double. |
| Автор: wester 20.8.2012, 21:21 | ||
да, опечатался Да, про подобную запись с литералами знаю, но тогда зачем нужно auto если придеться писать auto foo = 1.2F ? float foo = 1.2; auto foo = 1.2f; Одинаковое количество напечатанных символов для определения переменной. А где сахар, который синтаксический ? |
| Автор: borisbn 21.8.2012, 08:17 | ||
> А где сахар, который синтаксический ?
|