【问题标题】:C++ Not displaying Random number correctlyC ++没有正确显示随机数
【发布时间】:2013-04-18 13:30:19
【问题描述】:

我想为温度生成一个随机数。我使用的代码如下:

int Temp()
{
    // genreate random temperture

    // initialize random seed: 
    srand ( time (NULL) );

    // generate number between 1 and 100:
    int t = rand() % 100 + 1;

    std::cout << t << std::endl;
    return t;
}

当程序运行时,它不会显示 1 到 100 之间的数字,而是显示以下内容:

010C1109

有人可以解释哪里出错了或者为什么出错了吗?

编辑:如果有人想知道我使用了以下内容:

#include <iostream>
#include <string>
#include <fstream>
#include <istream>
#include <ctime>
#include <stdio.h>      
#include <stdlib.h>    
#include <time.h>     
#include <map>
#include <cstdlib>
#include <cstring>
#pragma once

【问题讨论】:

  • 也许您之前将std::hex 传递给了std::cout
  • 忘了提到我正在调用该函数。只是由于某种原因,它无法正确显示。我没用过std::hex,以前没用过
  • 你能生产SSCCE吗? sscce.org
  • 这与问题无关,但srand应该在程序启动时调用一次,而不是在每次调用rand之前。
  • 使用所提供代码的最简单程序(请参阅ideone.com/K5Ayw2)在 GCC 或 Visual Studio 中都不会输出类似的内容。有没有可能你正在做类似std::cout &lt;&lt; &amp;t &lt;&lt; std::endl; 的事情?尝试按照@Agentlien 的建议创建一个 SSCCE 并将其发布。顺便说一句,您的主 cpp 文件中是否有该编译指示?如果是,为什么?

标签: c++ visual-studio-2010 visual-c++


【解决方案1】:

如何选择数字的显示方式:

std::cout << std::hex << t << std::endl; //displays in hexadecimal
std::cout << std::dec << t << std::endl; //displays in decimal

在我的例子中,我看到 十六进制 58 和十进制 88 (5*16+8)。 以下是使帖子完整的官方链接。

C++ 论坛:

http://www.cplusplus.com/forum/windows/51591/

详细说明:

http://www.cplusplus.com/reference/ios/dec/

【讨论】:

猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 2013-09-29
  • 2014-05-01
  • 1970-01-01
相关资源
最近更新 更多