Операционные слова? - PullRequest
       5

Операционные слова?

0 голосов
/ 12 апреля 2019

В этом коде вы увидите, что он запрашивает пароль. Обратите внимание, что нет реальной настройки системы паролей. Я новичок в C ++, и я буквально только что узнал о строках. Я понимаю их, но не получаю хороших результатов. Это действующие слова? Я не понимаю строку полностью, поэтому я не понимаю, что происходит. Я пытался погуглить, но ничего не смог найти.

Когда я переворачиваю имя пользователя с паролем, он работает просто отлично. Так почему же он использует обратные слова?

#include <iostream>
#include <string>




std::string password()
{
    std::cout << "Please enter your password. : ";
    std::string password;
    std::getline(std::cin, password);
    return password;
}

std::string username()
{
    std::cout << "Please enter your username. : ";
        std::string username;
        std::getline(std::cin, username);
        return username;
}
int main()
{

    std::cout << "Welcome to the test login! Please enter your username and password to enter. \n \n \n";
    std::cout << username() << password() << "\n \n \n";



    int noEnd{ 0 };
    std::cin >> noEnd;
    return 0;
}

Обратите внимание, что если я поменяю пароль на имя пользователя, он будет работать.

    std::cout << "Welcome to the test login! Please enter your username and password to enter. \n \n \n";
    std::cout << password() << username() << "\n \n \n";

Но это не имеет смысла для меня. Я знаю с ++ и только что изучил основы строк. Теоретически, если у меня есть код, как,

    std::cout << "Welcome to the test login! Please enter your username and password to enter. \n \n \n";
    std::cout << username() << password() << "\n \n \n";

имя пользователя () должно идти первым, но вместо него пароль ()?

Извините, я знаю, пожалуйста, не используйте как-то странные функции и вещи, потому что я, вероятно, не пойму их. , , Тем не менее.

1 Ответ

0 голосов
/ 12 апреля 2019

Ваш компилятор оценивает std::cout << password() << username() << "\n \n \n" справа налево.

Согласно ccpreference

Порядок вычисления операндов почти всех операторов C ++(включая порядок вычисления аргументов функции в выражении вызова функции и порядок вычисления подвыражений в любом выражении) не определено.Компилятор может оценивать операнды в любом порядке и может выбирать другой порядок при повторном вычислении того же выражения.

Наилучшим вариантом является написание кода способом, который не зависит от порядка, в котором он находится.оценено.

std::string u = username();
std::string p = password();

std::cout << u << p << "\n \n \n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...