Приветствуем на Форум Херсона. Форум Херсонской молодежи.. На данный момент Вы находитесь на форуме как Гость и имеете очень ограниченные возможности и права. Что бы писать или отвечать в темах, загружать картинки, файлы на форуме Вам нужно зарегистрироваться, что совершенно бесплатно. Регистрация очень быстрая, не откладывайте эту процедуру! Если возникнут проблемы с регистрацией напишите нам. |
|
Программирование Все вопросы по написанию программ |
|
Опции темы |
19.11.2008, 19:38 | #1 (Ссылка на пост) |
забанен
Мой дневник
Пол:
|
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; } ЗЫ - те кто попал под мою дневную рассылку прошу не отвечать
__________________
|
|
Сказали Спасибо пользователю pingwinator за этот пост: | Marchello (19.11.2008) |
19.11.2008, 20:19 | #2 (Ссылка на пост) | ||||||||
Местные мы
Пол:
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея:
0
Вес репутации: 23
|
Кхм.. мда.
Ну с первого взгляда видно что будет 100 раз (не считая первую строку). Но так как подвох же должен быть, то я открыл компилятор... Весь прикол в комментарии. Верней даже в его концовке, а именно: "??/". Опытным путем было установлено что ASCII код для '??/' и для '\' - одинаков. Тут уже я все понял )) Чуть позже нашел в МСДНе такую фигню как триграфы. Так и есть, '??/' == '\' Ну а '\' - просто говорит о том что строка ниже является продолжением строки выше. То есть, по сути коммент распространяется и на цикл, который не выполняется, и в итоге получаем 10 раз (Это можно наблюдать если включить генерацию файла после препроцессинга). |
||||||||
|
19.11.2008, 20:21 | #3 (Ссылка на пост) | |
забанен
Мой дневник
Пол:
|
Цитата:
__________________
|
|
|
19.11.2008, 21:32 | #4 (Ссылка на пост) | ||||||||
Местные мы
Пол:
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея:
0
Вес репутации: 23
|
А вот тоже примерчик. Правда тут без подвохов, на чистое знание.
Был у нас в тестах, и на собеседовании я его давал, и у всех были разные ответы Код:
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; // ? } Ответ аргументировать. (Желательно не открывать компилятор, пример устный ) |
||||||||
|
19.11.2008, 21:42 | #5 (Ссылка на пост) | |
забанен
Мой дневник
Пол:
|
Цитата:
хм, а статик можно делать делейт? там поидее каунт убить должно, но память не освободит...
__________________
Последний раз редактировалось pingwinator, 19.11.2008 в 22:00. |
|
|
20.11.2008, 09:00 | #6 (Ссылка на пост) | |||||||||
Местные мы
Пол:
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея:
0
Вес репутации: 23
|
Цитата:
то есть 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 в С++ - некоторые вещи в С# понимаются на автомате). Последний раз редактировалось Marchello, 20.11.2008 в 09:52. Причина: Добавлено сообщение |
|||||||||
|
Сказали Спасибо пользователю Marchello за этот пост: | TIGR (20.11.2008) |
20.11.2008, 12:19 | #7 (Ссылка на пост) | |
забанен
Мой дневник
Пол:
|
Цитата:
__________________
|
|
|
20.11.2008, 12:36 | #8 (Ссылка на пост) | ||||||||
Скучающий бездельник
Пол:
Адрес: Институт времени
Благодарил(а): 15,680
Благодарили 14,464 раз в 6,143 постах
Галерея:
0
Вес репутации: 181
|
3 вроде
че 2? первый проход цикла +1 = 1 сдвиг до 2 -1 = 1 второй проход цикла +1 = 2 сдвиг до 4 -1 = 3
__________________
Пускай не стоит свеч игра, поверь опять, что победишь. В конечном счете будет прав тот, кто зажег огонь добра. |
||||||||
|
20.11.2008, 13:38 | #9 (Ссылка на пост) | |||||||||
Щас сменю себе статус
Пол:
Благодарил(а): 9,926
Благодарили 6,148 раз в 2,096 постах
Галерея:
0
Вес репутации: 82
|
Цитата:
к сожалению плюсы очень плохо знаю, поэтому возможно полное понимание "друзей" в с++ не определю, но такое вообще в джаве есть дружественные классы, методы позволяет доступ к свойствам напрямую давать другим классам находящимся в одном пакете. вроде по сути одно и тоже.. зы со всем согласен что говорит марчело - плюсы дают хорошую базу того что происходит ... сужу не по себе ))
__________________
Последний раз редактировалось TIGR, 20.11.2008 в 14:28. |
|||||||||
|
Сказали Спасибо пользователю TIGR за этот пост: | Marchello (20.11.2008) |
20.11.2008, 18:28 | #10 (Ссылка на пост) | ||||||||
Местные мы
Пол:
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея:
0
Вес репутации: 23
|
Оба варианта не правильны (причем от правильного довольно далековасто)
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. Последний раз редактировалось Marchello, 20.11.2008 в 18:50. Причина: Добавлено сообщение |
||||||||
|
20.11.2008, 20:47 | #11 (Ссылка на пост) | ||||||||
Скучающий бездельник
Пол:
Адрес: Институт времени
Благодарил(а): 15,680
Благодарили 14,464 раз в 6,143 постах
Галерея:
0
Вес репутации: 181
|
почему 2?
[2] означает 2 экземпляра?? видимо этот кусок кода я не до конца понял - поэтому и ошибка вышла я как и Тигр в Си тоже не силен. Синтатксис помню очень плохо. Робот Вертер добавил 20.11.2008 в 21:58 ужас глюкавых кодов нам тут напредлагал =)
__________________
Пускай не стоит свеч игра, поверь опять, что победишь. В конечном счете будет прав тот, кто зажег огонь добра. Последний раз редактировалось Робот Вертер, 20.11.2008 в 20:58. Причина: Добавлено сообщение |
||||||||
|
22.11.2008, 22:02 | #12 (Ссылка на пост) | ||||||||
Местные мы
Пол:
Благодарил(а): 32
Благодарили 113 раз в 88 постах
Галерея:
0
Вес репутации: 20
|
Код:
char A[6] = {'1', '2', '3', '4', '5', '6'}; short *pA = (short*)A; char* p = (char*)(++pA); std::cout << *(&(p[2]) + 1);
__________________
|
||||||||
|
23.11.2008, 00:02 | #13 (Ссылка на пост) | ||||||||
Местные мы
Пол:
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея:
0
Вес репутации: 23
|
|||||||||
|
23.11.2008, 00:06 | #14 (Ссылка на пост) | ||||||||
Щас сменю себе статус
Пол:
Благодарил(а): 9,926
Благодарили 6,148 раз в 2,096 постах
Галерея:
0
Вес репутации: 82
|
........6
__________________
|
||||||||
|
23.11.2008, 07:55 | #15 (Ссылка на пост) | ||||||||
Модератор
Пол:
Благодарил(а): 30,810
Благодарили 37,603 раз в 8,037 постах
Галерея:
0
Вес репутации: 401
|
шесть раз! шесть два! кто больше господа! шесть...
__________________
Нужно делать так, как нужно. А как не нужно, делать не нужно. |
||||||||
|
23.11.2008, 09:10 | #16 (Ссылка на пост) | ||||||||
Местные мы
Пол:
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея:
0
Вес репутации: 23
|
|||||||||
|
Сказали Спасибо пользователю Marchello за этот пост: | ustas (23.11.2008) |
23.11.2008, 09:30 | #17 (Ссылка на пост) | ||||||||
Скучающий бездельник
Пол:
Адрес: Институт времени
Благодарил(а): 15,680
Благодарили 14,464 раз в 6,143 постах
Галерея:
0
Вес репутации: 181
|
ПРОДАНО!
Мальчику в тигровой шапке =)
__________________
Пускай не стоит свеч игра, поверь опять, что победишь. В конечном счете будет прав тот, кто зажег огонь добра. |
||||||||
|
Сказали Спасибо пользователю Робот Вертер за этот пост: | TIGR (09.01.2009) |
09.01.2009, 14:01 | #18 (Ссылка на пост) | ||||||||
Щас сменю себе статус
Пол:
Благодарил(а): 9,926
Благодарили 6,148 раз в 2,096 постах
Галерея:
0
Вес репутации: 82
|
вот в продолжение темы инетерсная статейка ))
http://www.unixwiz.net/techtips/reading-cdecl.html
__________________
|
||||||||
|
Сказали Спасибо пользователю TIGR за этот пост: | Aurum (22.09.2009) |
14.01.2009, 07:13 | #19 (Ссылка на пост) | ||||||||
Гаденыш
Пол:
Благодарил(а): 2,442
Благодарили 5,834 раз в 2,093 постах
Галерея:
0
Вес репутации: 78
|
( не могу создавать новую тему - приходится писать где попало )
вопрос людям пишущим для windows( я больше по ...nix ), почему такая ерунда получается: Код:
int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { argused3( hInstance, hPrevInstance, nCmdShow ); InitArgs( (wchar_t*) lpCmdLine ); ... } пробовал точку входа int main( int argc, char **argv ) - argv так же всегда NULL, собирал в VC++ 2008 Lester добавил 14.01.2009 в 08:27 разобрался - проблема во флагах линковщика
__________________
- Слава Україні! - закричали они, вместо приветствия. - Что это за фашизм?! - возмутился журналист Гундырев. - Откуда у них столько ненависти к русским? Последний раз редактировалось Lester, 14.01.2009 в 07:27. Причина: Добавлено сообщение |
||||||||
|
23.01.2009, 19:52 | #20 (Ссылка на пост) | |
Модератор
Пол:
|
Цитата:
реквестирую какао и карбон! |
|
|
23.01.2009, 20:07 | #21 (Ссылка на пост) | ||||||||
Гаденыш
Пол:
Благодарил(а): 2,442
Благодарили 5,834 раз в 2,093 постах
Галерея:
0
Вес репутации: 78
|
это единственный платформенно-зависимый макрос в моем тулките - точка входа, все остальные привязки к ОС вынесены в отдельные библиотеки, в которых реализуется интерфейс I_Core
__________________
- Слава Україні! - закричали они, вместо приветствия. - Что это за фашизм?! - возмутился журналист Гундырев. - Откуда у них столько ненависти к русским? |
||||||||
|
Здесь присутствуют: 1 (пользователей - 0 , гостей - 1) | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Call of Duty 5 World at War | Evil | Игры | 13 | 18.07.2009 12:26 |
Включи радио Network World | Riddler | Музыка | 15 | 19.08.2005 21:44 |
Форум сайта Network World | Riddler | Общие | 3 | 15.02.2005 17:06 |
Программа по заявкам на радио Network World | Riddler | Музыка | 2 | 12.02.2005 14:36 |