Программа принимает номер, введенный пользователем, и выводит этот номер в два раза. Я создал две функции, которые собирают число (getnumber), а другое - удваивает его (doublelumber). Программа работает правильно; однако выход не является полностью точным.
Выход только частично. Т.е. пользователь вводит 50, значение удваивается, а выход должен быть 100. Вместо этого значение выводится как 100114. Только первые несколько чисел кажутся тем, что я хочу.
#include <iostream>
void doublenumber(int&);
void getnumber(int&);
int main() {
int value;
getnumber(value);
doublenumber(value);
std::cin.get();
std::cin.get();
return 0;
}
void doublenumber(int &refvar) {
refvar*= 2;
std::cout << "\nThe value you entered doubled is: " << refvar << '.\n';
}
void getnumber(int &userNum) {
std::cout << "\nEnter a number to double: ";
std::cin >> userNum;
}
std::cout << "\nThe value you entered doubled is: " << refvar << '.\n';
^^^^^
|
multicharacter literal
Это многоканальный литерал и имеет тип int
.
C++ 11 §2.13.2 Символьные литералы
Литеральный символ - это один или несколько символов, заключенных в одинарные кавычки, как в
x
, необязательно предшествующие буквеL
, как вLx
. Литеральный символ, который не начинается сL
является литералом обычного характера, также называемым литералом узкого символа. Литерал обычного символа, который содержит один c-char, имеет тип char, значение которого равно числовому значению кодировки c-char в наборе символов выполнения. Литерал обычного характера, содержащий более одного c-char, является многоканальным литералом. Многоканальный литерал имеет типint
и значение, определяемое реализацией.
Отметьте это сообщение: Почему этот код с '1234' компилируется в C++? ,
Я ответил на свой вопрос, внимательно просмотрев код. Тьфу! Очень простая ошибка:
std::cout << "\nThe value you entered doubled is: " << refvar << '.\n';
"\n" должен быть: ".\N"; "Вместо этого. Может ли кто-нибудь сказать мне, почему это выдало этот результат?
100
(правильный ответ) и сразу после этого значение многосимвольного литерала'.\n'
, который интерпретируется какint
: stackoverflow.com/questions/7459939/…