【问题标题】:Double Number Program Unexpected Values双数程序意外值
【发布时间】:2014-03-29 18:47:22
【问题描述】:

关于计划

程序采用用户输入的数字并输出该数字的两倍。我创建了两个函数,一个收集数字(getnumber),另一个将数字加倍(doublenumber)。该程序运行正常;但是,输出并不完全准确。

问题

输出只是部分正确。即用户输入 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;
}

【问题讨论】:

    标签: c++ function pass-by-reference


    【解决方案1】:

    在仔细查看代码后,我已经回答了我自己的问题。啊!一个非常简单的错误:

     std::cout << "\nThe value you entered doubled is: " << refvar << '.\n';
    

    "'.\n'" 应该是:".\n";" 而不是。有人能告诉我为什么会产生这个输出吗?

    【讨论】:

    【解决方案2】:
    std::cout << "\nThe value you entered doubled is: " << refvar << '.\n';
                                                                     ^^^^^
                                                                       |
                                                             multicharacter literal
    

    这是一个多字符文字,类型为int

    C++11 §2.13.2 字符字面量

    字符文字是用单引号括起来的一个或多个字符,如’x’,前面可选字母L,如L’x’。不以L 开头的字符文字是普通字符文字,也称为窄字符文字。包含单个 c-char 的普通字符文字具有 char 类型,其值等于执行字符集中 c-char 编码的数值。 包含多个 c-char 的普通字符文字是多字符文字。多字符文字具有 int 类型和实现定义的值。

    查看这篇文章:Why does this code with '1234' compile in C++?

    【讨论】:

      猜你喜欢
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2021-07-27
      • 2013-12-21
      • 1970-01-01
      相关资源
      最近更新 更多