c++ - Xcode C++ 错误阻止进一步输出超过 srand()

标签 c++ xcode random time

我正在开发一个程序,该程序生成两个随机数和一个 if 语句,该语句生成用于加法的“+”或用于减法的“-”。我目前无法检查和查看我的 putput 是什么,所以我可以更正任何错误,因为程序运行我打开的“欢迎”语句,然后显示在蓝色括号 (lldb) 中,并且代码停在那里。我注意到我的 srand(time(0)) 函数旁边它变成了绿色并显示“线程 1:断点 1.1”,并且在它下面显示“隐式转换失去整数精度:'time_t'(又名'long')到'unsigned int '”。有没有办法解决这些问题或让错误消失?我的代码如下。任何帮助或见解将不胜感激,谢谢!

#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;

int main()

{
    cout << "Welcome to the Math Tutor!" << endl;

    int N1, N2;
    int O = rand() % 2;
    int Result;
    int Answer;

    srand(time(0));

    if(O == 2)
    {
        cout << "+";
    }

    else
    {
        cout << "-";
    }

    N1 = 100 + rand() % 999;
    N2 = 100 + rand() % 999;
    Result = N1 + O + N2;

    cout << setw(10) << N1 << endl;
    cout << setw(10) << N2 << O << "\n";
    cout << setw(10) << "------\n\n";

    cout << "Enter your answer: ";
    cin >> Answer;

    if(Answer == Result)
    {
        cout << "You are correct!\n\n";
    }

    else
    {
        cout << "You are incorrect, the correct answer is: " << Result << "\n\n";
    }

    cin.ignore(1);
    return 0;

}

最佳答案

time(0) 返回一个类型为 time_t 的值,这在您的机器上显然是一个 long

当您将此 long 传递给 srand() 时,需要一个 unsigned int,而不是 long 的所有值code> 将适合 unsigned int。您可以通过使用强制转换告诉编译器您不太关心这个来强行插入它。

srand(static_cast<unsigned int>(time(0))); 

当您或多或少地寻找一些随机数时,精度损失在这种情况下并不重要。

关于c++ - Xcode C++ 错误阻止进一步输出超过 srand(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357290/

相关文章:

c++ - 从模板基类继承构造函数而不重复模板参数?

c++ - operator new 重载和对齐

c++ - 将变量与 C++ 中的数据类型进行比较

ios - 尝试打开以前版本的 .xib 文件时 Xcode 6.0 崩溃

ruby-on-rails - 使用 will_paginate 对博客文章的随机列表进行分页

c++ - 此功能是否适合 Intel 上的 SIMD?

ios - 设置标签集合的字体

javascript - 如何在 webview 中显示或只读来自网站的表单? - swift

c++ - 具有某些特征的伪随机函数算法

c - 一个很好的 C 随机数生成器