Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

простой пример на с++   Найти похожие ветки 

 
мазербо)   (2005-01-17 20:00) [0]

Нужно ввести с клавы число чтобы запомнилось в переменной а потом ее можно было показать. Пишу
#include <iostream.h>

int main(int r)
{
cout << "hello, enter value\n";
cin >> r;
cout << "ur number is = " r;
}

но не пашет, я тока хелоу ворлд на с++ написал, делфи форева %)


 
palva ©   (2005-01-17 20:54) [1]

Что значит не пашет? Программа не должна даже компилироваться.


 
мазербо)   (2005-01-17 20:55) [2]

мде...


 
Aleksandr   (2005-01-17 20:55) [3]

#include<stdlib.h>
#include<conio.h>

void main()
{
int a;
printf("Vvedite chislo");
scanf("%i", &a);
printf("/n Chislo a ravno = %i", a)
}


 
wicked ©   (2005-01-17 21:00) [4]


> #include <iostream.h>
>
> int main(int r)

argv хде?...
> {
> cout << "hello, enter value\n";
> cin >> r;
> cout << "ur number is = " r;

вообще не должно скомпилироваться... r к строке как относится?...
> }


> но не пашет, я тока хелоу ворлд на с++ написал, делфи форева
> %)

LMD....


 
мазербо)   (2005-01-17 21:12) [5]

Alexander Это С а мне надо с++ =)


 
марсианин ©   (2005-01-17 21:21) [6]


> argv хде?...

:)) argv не обязателен. по стандарту. иногда вообще пишут void main (void)

вот компилируется и работает
#include <iostream>

int main(int n)
{
   int x;
   std::cout << "enter value, stupid!";
   std::cin >> x;
   std::cout << "ur number is = " << x << std::endl;
}


вообще С++ сложен для новичка.. но потом затягивает. не потому, что лучше Делфи .. он просто другой..


 
Aleksandr   (2005-01-17 21:21) [7]

>мазербо)   (17.01.05 21:12) [5]

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


 
wicked ©   (2005-01-17 21:25) [8]


> argv не обязателен. по стандарту. иногда вообще пишут void
> main (void)

угу, не нужен, ща в хелп глянул...
просто сработала привычка - сигнатуры для main(int argc, char * argv[]) и main(void) должны отличаться... а при отличии сигнатур мы получим визг линкера... или я чё-то пропустил?...


 
марсианин ©   (2005-01-17 22:06) [9]


> а при отличии сигнатур мы получим визг линкера


честно говоря не вникал в подробности. я так понял, что есть набор определенных сигнатур main, которые распознаются.. туда еще входят и юникодовый  wmain. (а также WinMain"ы, если мы о Визуал студио и тп)

еще, если заметил, int main(...) не должна возвращать значение. т.е. это не просто какая-то функция :)


 
wicked ©   (2005-01-17 22:21) [10]

> марсианин ©   (17.01.05 22:06) [9]

> еще, если заметил, int main(...) не должна возвращать значение.
> т.е. это не просто какая-то функция :)

как это - не должна?... обязана просто, если она int...
если не будет в ней явного return, то под билдером мы получим варнинг, а под vc - сообщение об ошибке...


 
марсианин ©   (2005-01-17 22:30) [11]


> если не будет в ней явного return, то под билдером мы получим
> варнинг, а под vc - сообщение об ошибке...

проверь :)
тот пример, что я привел выше компилируется студией без единого ворнинга


 
nikkie ©   (2005-01-17 23:20) [12]

>а под vc - сообщение об ошибке...

просто warning

>тот пример, что я привел выше компилируется студией без единого ворнинга

сам-то проверял?


 
марсианин ©   (2005-01-17 23:57) [13]


> просто warning

нет, под визуал студио 7 дот-нет именно ошибка. в 6-ой также. с  остальными не работал.
предупрежедние - когда не все пути управления ведут к возврату значения.

> сам-то проверял?

да, проверял


 
мазербо)   (2005-01-18 11:50) [14]

Все работает, спасибо. И еще стоит ли искать вижал 7.1 или хватит и 6.0 ? большая ли разница?


 
мазербо)   (2005-01-18 11:57) [15]

И еще  std:: это вызов стандартной команды из библиотеки?
просто есть пример в книге

#include <iostream.h>

void main()
{
 cout << "Hello, World\n";
}

и все работает, не надо писать std::cout << "Hello, World";


 
nikkie ©   (2005-01-18 16:54) [16]

>марсианин
[10] wicked говорит: будет ошибка
[11] ты говоришь: да не, даже warning не будет
[12] я говорю: будет warning
[13] ты говоришь: будет именно ошибка.
пришлось потратил некоторое время, чтобы понять вообще о чем речь. :))

я говорил про main. отсутствие return в нем дает warning в VC6.
в частности твой код его дает. то, что VC7 даже warning не выдает, удивило меня.

в случае любой другой не-void функции отсутствие return дает ошибку и в VC6, и в VC7.


 
марсианин ©   (2005-01-18 22:44) [17]


> в случае любой другой не-void функции отсутствие return
> дает ошибку и в VC6, и в VC7.

да.
кстати, когда дело касается ворнингов, не стоит забывать про warning level. по стандарту 3.

по поводу main..
еще Струструп в своем "Язык С++. специальное издание" ( 2мазербо) - настоятельно рекомендую)
упоминает, что return в main не обязателен. я сразу проверил в 7-ой.. все ок,  а 6-ая стоит на работе.. а там я не часто "хелло ворлд" пишу :)

т.е. такое поведение main - поведение, соответсвующее современному стандарту С++

6-ая студия создавалась раньше. не знаю в каком году она вышла, но на новый стандарт С++ не ориентировались.. наверное, отсюда и варнинг.
некоторые примеры из Страуструпа в 6-ой вообще не компилируются

кстати и 7-ая стандарту на 100% не соответствует, хотя там ситуация гораздо лучше, там из Страуструпа все компилируется (вроде бы :)

[15] мазербо)
обрати внимание
#include <iostream.h> - в твоей книге
и
#include <iostream> - в моей книге :)

разница: <iostream.h> - для программ в стиле С. чтоб старые исходники не пришлось править.
<iostream> - заголовок для С++ программ, и там все функции объявлены в пространстве имен std
std::cout - значит, что cout принадлежит пространству имен std
если ты уберешь std:: в моем примере - компилятор выдаст ошибку, что не объявленно cout.

6-ая или 7-ая? как ты понял они все-таки различаются.
используй наиболее современную реализацию С++.
и еще. достань книжку по-новее.


 
марсианин ©   (2005-01-18 22:48) [18]


> хотя там ситуация гораздо лучше, там из Страуструпа все
> компилируется (вроде бы :)

нет, не все.. частичная специализация шаблонов, например, не поддерживается.


 
kirasukii   (2005-01-18 23:18) [19]

Что вы понимаете под частичной специализацией?
Видимо я от жизни отстал.

Специализация вполне себе работает.

template <class T> class fooo {public: T t; void foo(){t;}};
void fooo<char>::foo(){t; ASSERT(0);}

 fooo<int> f1;
 fooo<char> f2;
 f1.foo();
 f2.foo();


 
марсианин ©   (2005-01-19 00:39) [20]


> void fooo<char>::foo(){t; ASSERT(0);}

это полная специализация.


Что вы понимаете под частичной специализацией?

ээ.. есть такая :) подробности - к Страуструпу. сам тоже не использую.


 
мазербо)   (2005-01-19 14:49) [21]

Спасибо марсианин, все разжевал :)

Сейчас взял книгу : Подбельский: Язык С++, 2000 г. Москва, Финансы и Статистика.

Вот по ней и учусь, поновее книжку это от Страуструпа, его специальное издание?


 
07BB:080Dh   (2005-01-19 15:10) [22]

мазербо)   (19.01.05 14:49) [21]

Страуструпа тебе рано



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.062 c
1-1106677482
Aldor_
2005-01-25 21:24
2005.02.06
Можно ли с помощью GDI получить полноэкранный режим?


1-1106724321
mariya_mezenceva
2005-01-26 10:25
2005.02.06
есть ли функция типа (год,месяц,день:integer):tdatetime


14-1106138020
vajo
2005-01-19 15:33
2005.02.06
Шрифты


3-1104851590
Walker
2005-01-04 18:13
2005.02.06
Проблема выбора: Delphi + MS SQL


1-1106636536
syte_ser78
2005-01-25 10:02
2005.02.06
Подключение к OutLook