Форум: "Потрепаться";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Внизпростой пример на с++ Найти похожие ветки
← →
мазербо) (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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.062 c