2016-05-19 2 views
1

Я просто хотел спросить about this tutorial.C++ Учебник кажется неправильным

Я не понимаю. Код они пишут, как это:

intmain() { 
    cout << "Hello World!\n"; 
    return0; 
} 

Теперь, я действительно действительно новичок в C++, но, конечно, это должно быть:

int main() { 
    std::cout << "Hello World!\n"; 
    return 0; 
} 

Или есть какой-то причудливый способ написания C++, что я не понимаю? Код, написанный в этом учебнике, не будет компилироваться для меня.

+0

@LightnessRacesinOrbit thanks. Но правильно? Или я чего-то не хватает? – Chud37

+3

Вы спрашивали автора тутера?imho лучше связаться с ними, прежде чем публиковать свои ошибки в общественных местах – user463035818

+2

и btw не доверяйте ни одному учебнику. Их просто для многих, и просто невозможно, что все они хороши. – user463035818

ответ

12

Вы верны; что «учебник» chock full ошибок при форматировании.

Многие, многие, многие учебники на C++ ошибочны. Не доверяйте слову некоторого случайного пользователя в Интернете; использование a proper, peer-reviewed book.

3

У них явно были проблемы с пробелами и цитатами, когда они копировали их код.

В результате их код не готов к копированию.

Я считаю, что это должно быть:

#include <iostream> 
using std::cout; 
int main() 
{ 
    cout << "Hello world!\n"; 
    return 0; 
} 
+0

Да, это странно, потому что theres комментирует внизу людей, говорящих: «Спасибо, отлично работает!» Такие вещи. Я не понимаю. – Chud37

+0

Возможно, форматирование было изменено кем-то, кто не знает 'C++' после публикации статьи. Хотя это не объясняет отсутствие std :: – drescherjm

1

Ну, очевидно, вы должны иметь пространство между возвращением 0; и int main().

Теперь, леммм и объясните std :: для вас. std - это «пространство имен». В принципе, он используется для группировки аналогичного кода вместе, чтобы избежать столкновений имен. «Стандартное» (std) пространство имен включает в себя хорошо, основные функции C++. В новых (ish) версиях C++ вам нужно указать пространство имен, в котором вы выполняете свои функции.

Вы можете сделать «использование пространства имен std;» в начале или указать пространство имен отдельно, как в вашем исправленном коде, для каждой стандартной функции, которую вы используете.

+2

У вас никогда не должно быть 'using namespace std;' [*** Ссылка ***] (http://stackoverflow.com/questions/1452721/why-is-using-namespace -std-in-c-считается-плохой практикой) – abelenky

+0

@abelenky Правда, но это не имеет большого значения для тривиальных фрагментов кода. – Meraj99

+3

Это имеет значение ** больше ** для тривиальных фрагментов кода. Это приводит к массивному пространству 'std ::' для вашего кода для использования 1 или 2 элементов. Когда другой разработчик читает код, он сообщает им ничего: ничего. (весь код использует 'std ::', но он все равно не говорит им, какие части будут использоваться) – abelenky

2

Или есть какой-то причудливый способ написания C++, который я не понимаю?

Ну, там еще можно было бы предположить, гадости, как с помощью C-макросов препроцессора :

#define intmain int main 
#define return0 return 0 

Но я должен согласиться с @Lightness, просто не доверять случайным источники обучения.

Хороший для C++. Я использую почти ежедневно для получения надежной ссылки: cppreference.com.


1) Я бы нагнетать видеть такое мой босс, как вопиющая некомпетентность, и рекомендовать уволить автора, который написал такой код.

+1

Это ссылочный сайт; хорошо для поиска, но не для обучения. –

Смежные вопросы