Форум Херсона. Форум Херсонской молодежи, флейм, фотографии Херсона, политика в Херсоне, сетевой форум, сети Херсона


Приветствуем на Форум Херсона. Форум Херсонской молодежи..

На данный момент Вы находитесь на форуме как Гость и имеете очень ограниченные возможности и права. Что бы писать или отвечать в темах, загружать картинки, файлы на форуме Вам нужно зарегистрироваться, что совершенно бесплатно. Регистрация очень быстрая, не откладывайте эту процедуру!

Если возникнут проблемы с регистрацией напишите нам.

Галерея форума Блоги пользователей Список банов
Вернуться   Форум Херсона. Форум Херсонской молодежи. > > >
Регистрация СправкаСтатистика Пользователи Календарь Сообщения за день

Программирование Все вопросы по написанию программ

Тема: Hello World! Ответить в теме
Ваше имя пользователя: Для входа нажмите здесь
Проверка вопроса системы антиспама "NoSpam!"
Столиця Русі
Image Verification
Пожалуйста, введите шесть букв и/или цифр, которые изображены на картинке.

Заголовок:
  
Сообщение:
Иконки для сообщения
Вы можете выбрать иконку, характеризующую сообщение:
 

Дополнительные опции
Другое

Просмотр темы (Новые вначале)
23.01.2009 20:07
Lester
Цитата:
Сообщение от zwitter Посмотреть сообщение
блджад, это пример лютой бешеной кроссплатформенности.
реквестирую какао и карбон!
это единственный платформенно-зависимый макрос в моем тулките - точка входа, все остальные привязки к ОС вынесены в отдельные библиотеки, в которых реализуется интерфейс I_Core
23.01.2009 19:52
zwitter
Цитата:
Сообщение от Lester Посмотреть сообщение
( не могу создавать новую тему - приходится писать где попало )

вопрос людям пишущим для windows( я больше по ...nix ), почему такая ерунда получается:

Код:
int APIENTRY _tWinMain(
    HINSTANCE    hInstance, 
    HINSTANCE    hPrevInstance,
    LPSTR        lpCmdLine, 
    int            nCmdShow)
{
    argused3( hInstance, hPrevInstance, nCmdShow );
    InitArgs( (wchar_t*) lpCmdLine );
    ...
}
тут всегда lpCmdLine== NULL, параметры пробовал передавать как в свойствах проекта, так и с командной строки, hPrevInstance - как положено NULL, hInstance и nCmdShow тоже корректные, а lpCmdLine всегда NULL, как объяснить/бороться?

пробовал точку входа int main( int argc, char **argv ) - argv так же всегда NULL, собирал в VC++ 2008

Lester добавил 14.01.2009 в 08:27
разобрался - проблема во флагах линковщика
блджад, это пример лютой бешеной кроссплатформенности.
реквестирую какао и карбон!
14.01.2009 07:13
Lester ( не могу создавать новую тему - приходится писать где попало )

вопрос людям пишущим для windows( я больше по ...nix ), почему такая ерунда получается:

Код:
int APIENTRY _tWinMain(
    HINSTANCE    hInstance, 
    HINSTANCE    hPrevInstance,
    LPSTR        lpCmdLine, 
    int            nCmdShow)
{
    argused3( hInstance, hPrevInstance, nCmdShow );
    InitArgs( (wchar_t*) lpCmdLine );
    ...
}
тут всегда lpCmdLine== NULL, параметры пробовал передавать как в свойствах проекта, так и с командной строки, hPrevInstance - как положено NULL, hInstance и nCmdShow тоже корректные, а lpCmdLine всегда NULL, как объяснить/бороться?

пробовал точку входа int main( int argc, char **argv ) - argv так же всегда NULL, собирал в VC++ 2008

Lester добавил 14.01.2009 в 08:27
разобрался - проблема во флагах линковщика
09.01.2009 14:01
TIGR вот в продолжение темы инетерсная статейка ))
http://www.unixwiz.net/techtips/reading-cdecl.html
23.11.2008 09:30
Робот Вертер ПРОДАНО!

Мальчику в тигровой шапке =)
23.11.2008 09:10
Marchello
Цитата:
Сообщение от ustas Посмотреть сообщение
шесть раз! шесть два! кто больше господа!
Больше и не нада, 6 - это правильно!
23.11.2008 07:55
ustas шесть раз! шесть два! кто больше господа! шесть...
23.11.2008 00:06
TIGR
Цитата:
Сообщение от Aurum Посмотреть сообщение
Код:
 char A[6] = {'1', '2', '3', '4', '5', '6'};
 short *pA = (short*)A;
 char* p = (char*)(++pA);
 
 std::cout << *(&(p[2]) + 1);
если 5, раскажу алгоритм
........6
23.11.2008 00:02
Marchello
Цитата:
Сообщение от Aurum Посмотреть сообщение
если 5, раскажу алгоритм
Нет, не 5.
Завтра расскажу
22.11.2008 22:02
Aurum
Код:
 char A[6] = {'1', '2', '3', '4', '5', '6'};
 short *pA = (short*)A;
 char* p = (char*)(++pA);
 
 std::cout << *(&(p[2]) + 1);
если 5, раскажу алгоритм
20.11.2008 20:47
Робот Вертер
Цитата:
Сообщение от Marchello Посмотреть сообщение
- создаем два инстанса класса Foo,
почему 2?
[2] означает 2 экземпляра??

видимо этот кусок кода я не до конца понял - поэтому и ошибка вышла

я как и Тигр в Си тоже не силен. Синтатксис помню очень плохо.

Робот Вертер добавил 20.11.2008 в 21:58
Цитата:
Сообщение от Marchello Посмотреть сообщение
И того имеем еще утечку памяти для 2-ух инстансов класса Foo.
ужас
глюкавых кодов нам тут напредлагал =)
20.11.2008 18:28
Marchello
Цитата:
Сообщение от Робот Вертер Посмотреть сообщение
3 вроде
Цитата:
Сообщение от pingwinator Посмотреть сообщение
2 тогда чтоле?
Оба варианта не правильны (причем от правильного довольно далековасто)

Marchello добавил 20.11.2008 в 19:46
Думаю программеров у нас не так много, поэтому расскажу как правильно.
На самом деле должно быть 9. Проанализируем.
первая итерация цикла:
- создаем два инстанса класса Foo, соответственно имеем 2 вызова конструктора, count уже 2.
- сдвиг, count == 4
- удаление, тут тонкость. Если мы создаем массив (в данном случае 2 элемента),
то удалять его нужно как delete [] A, поэтому в нашем случае удалится только первый элемент массива, тут count - 1 == 3.
(тут могу поподробней рассказать )

вторая итерация, тут по тем же шагам:
- еще два инстанса, count был 3 стал 5.
- сдвиг, 5 << 1 == 10
- удаляем снова первый элемент, 10 - 1 == 9

И того имеем еще утечку памяти для 2-ух инстансов класса Foo.

20.11.2008 13:38
TIGR
Цитата:
Сообщение от Marchello Посмотреть сообщение
Это включая множественное наследование (...и классов тоже), виртуальное наследование, friends - чего нет в том же .NET (С#) и помоему в Java (тут Тигр нам подскажет), хотя эти языки считаются полностью ООП.

к сожалению плюсы очень плохо знаю, поэтому возможно полное понимание "друзей" в с++ не определю, но такое вообще в джаве есть дружественные классы, методы позволяет доступ к свойствам напрямую давать другим классам находящимся в одном пакете. вроде по сути одно и тоже..

зы со всем согласен что говорит марчело - плюсы дают хорошую базу того что происходит ... сужу не по себе ))
20.11.2008 12:36
Робот Вертер
Цитата:
Сообщение от pingwinator Посмотреть сообщение
2 тогда чтоле?
3 вроде
че 2?

первый проход цикла
+1 = 1
сдвиг до 2
-1 = 1

второй проход цикла
+1 = 2
сдвиг до 4
-1 = 3
20.11.2008 12:19
pingwinator
Цитата:
Сообщение от Marchello Посмотреть сообщение
Да, бинарный сдвиг. Тут подсказка - этот сдвиг умножает число на 2,
то есть 3 << 1 == 6; 4 << 1 == 8.
А почему это статику делается delete ?
delete делается указателю А, а этот статик тут не причем (именно при удалении памяти). Он как бы имеет отношение к удалению но только
через деструктор класса Foo. Поэтому count никак не убьется.
Думаем дальше
2 тогда чтоле?
20.11.2008 09:00
Marchello
Цитата:
Сообщение от pingwinator Посмотреть сообщение
бинарный сдвиг?
хм, а статик можно делать делейт? там поидее каунт убить должно, но память не освободит...
Да, бинарный сдвиг. Тут подсказка - этот сдвиг умножает число на 2,
то есть 3 << 1 == 6; 4 << 1 == 8.
А почему это статику делается delete ?
delete делается указателю А, а этот статик тут не причем (именно при удалении памяти). Он как бы имеет отношение к удалению но только
через деструктор класса Foo. Поэтому count никак не убьется.
Думаем дальше

Marchello добавил 20.11.2008 в 10:52
Вот, кстати, еще примерчик. Тут никакого ООП, просто на понимание указателей:

Код:
 char A[6] = {'1', '2', '3', '4', '5', '6'};
 short *pA = (short*)A;
 char* p = (char*)(++pA);

 std::cout << *(&(p[2]) + 1);
Что еще хотел сказать. Я считаю (также и на своем опыте), что С++ - это мать всех языков.
Почему так, потому что С++ сочетает в себе всю низкоуровневость С -
это указатели, ссылки, работа с памятью,
а также имеет очень мощную ООП модель, которой могут похвастаться далеко не все языки.
Это включая множественное наследование (...и классов тоже), виртуальное наследование, friends - чего нет в том же .NET (С#) и помоему в Java (тут Тигр нам подскажет), хотя эти языки считаются полностью ООП.
Также в С++ можно использовать как ООП так и процедурное П, причем все в купе.
В общем, хорошо зная С++ - выучить другой язык не составит труда абсолютно.
При чем вы возможно будете разбираться в тонкостях нового языка еще лучше чем те которые изначально учили только этот язык.
(например зная механизм указателей и понятие heap в С++ - некоторые вещи в С# понимаются на автомате).
19.11.2008 21:42
pingwinator
Цитата:
Сообщение от Marchello Посмотреть сообщение
А вот тоже примерчик. Правда тут без подвохов, на чистое знание.
Был у нас в тестах, и на собеседовании я его давал, и у всех были разные ответы

Код:
static int count = 0;

class Foo
{
public:
    Foo() { count++; }
    ~Foo() { count--; }
};

void main()
{
    for (int i = 0; i < 2; i++)
    {
        Foo *A = new Foo[2];
        count <<= 1;

        try { delete A; }
        catch(...) { }
    }

    std::cout << count; // ?
}
Чему будет равен count в конце?
Ответ аргументировать.
(Желательно не открывать компилятор, пример устный )
бинарный сдвиг?

хм, а статик можно делать делейт? там поидее каунт убить должно, но память не освободит...
19.11.2008 21:32
Marchello А вот тоже примерчик. Правда тут без подвохов, на чистое знание.
Был у нас в тестах, и на собеседовании я его давал, и у всех были разные ответы

Код:
static int count = 0;

class Foo
{
public:
    Foo() { count++; }
    ~Foo() { count--; }
};

void main()
{
    for (int i = 0; i < 2; i++)
    {
        Foo *A = new Foo[2];
        count <<= 1;

        try { delete A; }
        catch(...) { }
    }

    std::cout << count; // ?
}
Чему будет равен count в конце?
Ответ аргументировать.
(Желательно не открывать компилятор, пример устный )
19.11.2008 20:21
pingwinator
Цитата:
Сообщение от Marchello Посмотреть сообщение
Кхм.. мда.
Ну с первого взгляда видно что будет 100 раз (не считая первую строку).
Но так как подвох же должен быть, то я открыл компилятор...

Весь прикол в комментарии. Верней даже в его концовке, а именно: "??/".

Опытным путем было установлено что ASCII код для '??/' и для '\' - одинаков. Тут уже я все понял ))
Чуть позже нашел в МСДНе такую фигню как триграфы.
Так и есть, '??/' == '\'
Ну а '\' - просто говорит о том что строка ниже является продолжением
строки выше.
То есть, по сути коммент распространяется и на цикл, который не выполняется, и в итоге получаем 10 раз
(Это можно наблюдать если включить генерацию файла после препроцессинга).
ну так не интересна :(
19.11.2008 20:19
Marchello Кхм.. мда.
Ну с первого взгляда видно что будет 100 раз (не считая первую строку).
Но так как подвох же должен быть, то я открыл компилятор...

Весь прикол в комментарии. Верней даже в его концовке, а именно: "??/".

Опытным путем было установлено что ASCII код для '??/' и для '\' - одинаков. Тут уже я все понял ))
Чуть позже нашел в МСДНе такую фигню как триграфы.
Так и есть, '??/' == '\'
Ну а '\' - просто говорит о том что строка ниже является продолжением
строки выше.
То есть, по сути коммент распространяется и на цикл, который не выполняется, и в итоге получаем 10 раз
(Это можно наблюдать если включить генерацию файла после препроцессинга).
19.11.2008 19:38
pingwinator
Hello World!

 Сколько раз на экране появится заветная фраза при выполнении этой программы?

Код:
#include <iostream>
int main(int argc, char* argv[])
{
   int i = 10;
   std::cout<<"Hello World!"<<std::endl;
   // Сколько раз???
   while(i--)
   {
      // Сколько раз будет вызвана эта строка???/
      for(int j=0; j<10; j++)
         std::cout<<"Hello World!"<<std::endl;
   }
   return 0;
}
ответ аргументировать


ЗЫ - те кто попал под мою дневную рассылку прошу не отвечать

Ваши права в разделе
Вы не можете создавать темы
Вы можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.

Время на сервере: 01:25.

Регистрация Справка Пользователи Календарь Сообщения за день

vBulletin 3, Copyright © 2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co