2016-03-20 3 views
-1
#include<iostream> 
using namespace std; 
int main() 
{ 
    int cin; 
    cin >> cin; 
    cout << "cin" << cin; 
    return 0; 
} 

Это программа. Я думал, что это должно дать ошибку. Но он скомпилировал и дал результат как cin0. то есть cin+junkvalueint cin. Как работает?

P.S. Я понимаю, что cin >> cin, это бит смена операции здесь. Но мой вопрос, почему мы можем объявить здесь int cin?

ответ

3

Вы можете объявить любое имя переменной в другой области действия, чем какая-либо существующая переменная. cin не является ключевым словом или зарезервированным именем, просто официальным именем входного потока. Фактически, если вы не используете using namespace std; в своем коде, вы можете сделать std::cin >> cin; и прочитать целочисленное значение со стандартного ввода. [Следует добавить, что даже с using namespace std; вы все равно можете использовать определители пространства имен, поэтому std::cin >> cin; будет работать «с», а также «без» этого утверждения - я имел в виду скорее то, что это плохая привычка использовать using namespace ... в целом, я предпочитаю просто набирать текст пространство имен, где это необходимо]

Очевидно, что делать такие вещи, как правило, плохая идея. Но он хорошо определен и «работает», пока вы знаете, что делаете, и не нуждаетесь в обоих одновременно.

+0

Итак, в коде, чтобы получить вход пользователя для переменной cin, я должен использовать что. :: cin >> cin, чтобы получить вход. –

+0

И я никогда не использую 'using namespace std;' в моем коде. Это было в викторине, и я смутился, увидев, что этот код работает. –

+0

Существует несколько способов сделать эту работу «задуманной». И да, это четко определено, 'cin' не является« особенным ». –

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