Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно понять и где прочитать? типы переменных 
:(
    Опции темы
OutlawZ
Дата 16.8.2012, 20:45 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Часто в книгах да и примерах кода видел такую запись:

Код

HBITMAP b;
TObject o;


как написано это мол b имеет тип HBITMAP а o тип TObject. Где можно прочитать про это? так как не понимаю зачем писать HBITMAP если можно просто написать b. 

Вопрос в том где можно прочитать про эти типы и как с ними работать? Заранее спасибо.


--------------------
user posted image
user posted image
PM MAIL   Вверх
Albor
Дата 17.8.2012, 08:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 2
Всего: 9



Цитата(OutlawZ @  16.8.2012,  19:45 Найти цитируемый пост)
как написано это мол b имеет тип HBITMAP а o тип TObject. Где можно прочитать про это? так как не понимаю зачем писать HBITMAP если можно просто написать b. 

Ну, это как бы азы - объявление переменных.

Цитата(OutlawZ @  16.8.2012,  19:45 Найти цитируемый пост)
Вопрос в том где можно прочитать про эти типы и как с ними работать?

Программирование под Windows. HBITMAP это описатель картинки... Ответить очень трудно, так как первая часть вопроса просто валит с ног:
Цитата(OutlawZ @  16.8.2012,  19:45 Найти цитируемый пост)

так как не понимаю зачем писать HBITMAP если можно просто написать b



Это сообщение отредактировал(а) Albor - 17.8.2012, 08:10
PM MAIL ICQ   Вверх
LeonidPr
Дата 17.8.2012, 09:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Цитата(OutlawZ @  16.8.2012,  20:45 Найти цитируемый пост)
Вопрос в том где можно прочитать про эти типы и как с ними работать?

Я так понимаю что вы программите в 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
Это в пятом билдере. в вашей версии разделы возможно отличаются, но думаю найдете что где.

Цитата(OutlawZ @  16.8.2012,  20:45 Найти цитируемый пост)
зачем писать HBITMAP если можно просто написать b

А затем, что C/C++ не являются языками с динамической типизацией и тип переменной нужно указывать при её объявлении.
--------------------
pkunzip.zip
PM MAIL   Вверх
NoviceF
Дата 17.8.2012, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

Репутация: 2
Всего: 2



Цитата(OutlawZ @ 16.8.2012,  20:45)
так как не понимаю зачем писать HBITMAP если можно просто написать b.

Попробуйте объявить любую переменную, не указав её тип - компилятор не даст, тут то же самое.
PM MAIL   Вверх
wester
Дата 18.8.2012, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: нет
Всего: 13



Цитата

зачем писать HBITMAP если можно просто написать b. 

Встречный вопрос - как компилятор поймет с каким типом надо работать, если его(тип) не объявить ?
PM MAIL   Вверх
catherham
Дата 18.8.2012, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 7.7.2010

Репутация: нет
Всего: нет



Цитата

Встречный вопрос - как компилятор поймет с каким типом надо работать, если его(тип) не объявить ? 


Из контекста использования. 

Код

a;
a = "строка";


Значит тип переменной строка. 
Даже С++ поддерживает похожее объявление переменной (в новом стандарте C++11).

Код

auto Variable = 10;

Здесь тип переменной int

Это сообщение отредактировал(а) catherham - 18.8.2012, 16:45
PM MAIL   Вверх
500mhz
Дата 18.8.2012, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 1
Всего: 14



DWORD рулит )))


--------------------

PM MAIL ICQ   Вверх
wester
Дата 20.8.2012, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: нет
Всего: 13



catherham
Цитата

Код

a;
a = "строка";


Но в первой строке, будет неизвестно с каким типом работать. 

Цитата

Код

auto Variable = 10;


Да, это так. 
Но вопрос изначально поднимался о том, как компилятор узнает о типе на этапе объявления. 

Хотя может стоить юзать void* и не будет таких вопросов ? smile
PM MAIL   Вверх
catherham
Дата 20.8.2012, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 7.7.2010

Репутация: нет
Всего: нет



Цитата

Да, это так. 
Но вопрос изначально поднимался о том, как компилятор узнает о типе на этапе объявления. 

Хотя может стоить юзать void* и не будет таких вопросов ?  


На этапе объявления у нас просто текст  smile 

Компилятор определит тип на этапе компиляции и подставит необходимый код.

auto Variable = 10; и int Variable = 10; В итоге даст одинаковый машинный код. Это синтаксический сахар, чтобы не писать:

длиииииииииииииииииииииииииииииииииииноеИмяТипа переменная = функция(1);

А писать 

auto переменная  = функция(1);

Я кэп smile 

Это сообщение отредактировал(а) catherham - 20.8.2012, 13:07
PM MAIL   Вверх
wester
Дата 20.8.2012, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: нет
Всего: 13



Цитата

Компилятор определит тип на этапе компиляции и подставит необходимый код.

Да вот не определит он тип, если у него не будет каких либо данных о нем. Не сможет, да и не должен. 

Цитата

auto Variable = 10; и int Variable = 10; В итоге даст одинаковый машинный код.

соглашусь, но попробуйте написать 
auto Variable;
Variable = 10;  
думаю, ошибка будет в первой строке smile

Цитата

Это синтаксический сахар, чтобы не писать:
длиииииииииииииииииииииииииииииииииииноеИмяТипа переменная = функция(1);

Годами юзали #define и еще столько же будем юзать. Таки где выгода слова auto в данном случае ?
PM MAIL   Вверх
catherham
Дата 20.8.2012, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 7.7.2010

Репутация: нет
Всего: нет



Цитата

Да вот не определит он тип, если у него не будет каких либо данных о нем. Не сможет, да и не должен. 


Согласен, должен быть контекст

Цитата

соглашусь, но попробуйте написать 
auto Variable;
Variable = 10;  
думаю, ошибка будет в первой строке 


Все верно, но в PHP такое будет работать, в c++ конечно нет

Цитата

Годами юзали #define и еще столько же будем юзать. Таки где выгода слова auto в данном случае ? 


Годами использовали телеги, зачем нам машины? Так быстрее smile 

Если у вас в файле используется 10 таких типов? 
Можно писать и макросы, но с auto удобнее. Во всех современных языках такая фича есть. Теперь и в с++  smile 

Это сообщение отредактировал(а) catherham - 20.8.2012, 16:07
PM MAIL   Вверх
wester
Дата 20.8.2012, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: нет
Всего: 13



catherham
Цитата

Согласен, должен быть контекст

хоть в чем - то пришли к компромиссу smile
Цитата

Если у вас в файле используется 10 таких типов? 

10 типов с очень длинными названиями ? Ну что могу сказать... повезло. Обычно их много больше.
Цитата

Годами использовали телеги, зачем нам машины? Так быстрее smile 

Таки некорректно. Телеги это прошлое, и от них отказались именно из - за того, что они не удовлетворяют нынешним запросам. 
С auto же непонятно. Я могу написать auto d = 1.0  Но. это будет long или double ? 

Это сообщение отредактировал(а) wester - 20.8.2012, 16:32
PM MAIL   Вверх
catherham
Дата 20.8.2012, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 7.7.2010

Репутация: нет
Всего: нет



Цитата

Таки некорректно. Телеги это прошлое, и от них отказались именно из - за того, что они не удовлетворяют нынешним запросам. 
С auto же непонятно. Я могу написать auto d = 1.0  Но. это будет long или double ? 


Вы наверно имели ввиду float. long это вроде целое. Не знаю, я на с++ мало что писал, но в c#, например, это будет double.
Пошукал, нашел ответ на ваш вопрос
Цитата

Литералы, представляющие действительные числа, могут быть записаны как с десятичной точкой, так и в научной (экспоненциальной) нотации. По умолчанию они имеют тип double. Для явного указания типа float нужно использовать суффикс F или f, а для long double - L или l, но только в случае записи с десятичной точкой. 

Так что в с++ это тоже double. 

Это сообщение отредактировал(а) catherham - 20.8.2012, 17:23
PM MAIL   Вверх
wester
Дата 20.8.2012, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: нет
Всего: 13



Цитата

Вы наверно имели ввиду float. long это вроде целое. Не знаю, я на с++ мало что писал, но в c#, например, это будет double.

да, опечатался 

Да, про подобную запись с литералами знаю, но тогда зачем нужно auto если придеться писать auto foo = 1.2F ?
float foo = 1.2;
auto foo = 1.2f;
Одинаковое количество напечатанных символов для определения переменной. А где сахар, который синтаксический ?

Это сообщение отредактировал(а) wester - 20.8.2012, 21:24
PM MAIL   Вверх
borisbn
Дата 21.8.2012, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



> А где сахар, который синтаксический ?
Код

std::vector< std::map< unsigned long long, std::string > >::const_iterator it = find( ... )
vs
auto it = find( ... )



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.