组合2个函数时Xcode出错

时间:2013-11-26 06:46:16

标签: c++ xcode if-statement

我的作业无需帮助。这是一个项目,根据我必须结合2个程序,用户可以选择他想要运行的程序;我正在尝试使用IF ELSE语句。在单独运行这些程序时,它们工作正常。在尝试运行第一个程序rand函数时,Xcode给了我一个问题。你能帮助我吗? 谢谢

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

int main()
{
    int x;

    cout << "Hello Welcome to my Game Menu. Please make selection from following criteria"  <<endl;
    cout << "Please press 1 if you would like to play The Guessing Game"<<endl;
    cout << "Please press 2 if you would like to play The Math Game"<<endl;
    cin >>x;

    if ( x == 1)
    {
        cout << "Welcome to Guessing Game" <<endl;
        //declare the variables
        int num; //variable to store the random
        //number
        int guess; //variable to store the number
        //guessed by the user
        bool isGuessed; //boolean variable to control
        //the loop

        srand(time(NULL)); //Line 1

        num = rand() % 100; //Line 2

        isGuessed = false; //Line 3

        while (!isGuessed) //Line 4
        { //Line 5
            cout << "Enter an integer greater"
            << " than or equal to 0 and "
            << "less than 100: "; //Line 6

            cin >> guess; //Line 7
            cout << endl; //Line 8

            if (guess == num) //Line 9
            { //Line 10
                cout << "You guessed the correct "
                << "number." << endl; //Line 11
                isGuessed = true; //Line 12
            } //Line 13
            else if (guess < num) //Line 14
                cout << "Your guess is lower than the "
                << "number.\n Guess again!"
                << endl; //Line 15
            else //Line 16
                cout << "Your guess is higher than "
                << "the number.\n Guess again!"
                << endl; //Line 17
        } //end while //Line 18
    }

    else if ( x == 2) {
        cout <<"Welcome to Math Game " <<endl;

        double a,b,x,y,z,sum;
        string name;

        cout << "Please enter your name... ";
        cin>> name;
        cout<<endl;
        cout << "    WELCOME TO MATH MIND TRICKS " <<name <<endl;
        cout<< "I will read your mind." <<endl;
        cout<< "We will choose five , five digit numbers together" <<endl;
        cout<< "but i will be able to give you the sum, just after the first one" <<endl;
        cout<<endl;
        cout<< "What is your first five digit number?"<<endl;
        cin>> x;
        cout<<endl;
        cout<< " The sum is going to be " << 199998+x <<endl;
        cout<< "Please enter a second number" <<endl;
        cin>> y;
        cout<<endl;
        a= 99999-y;
        cout<< " OK, im going to choose    " <<a <<endl;
        cout<< " Please enter your last five digit number" <<endl;
        cin>> z;
        b= 99999-z;
        cout<< " OK, im going to choose    " <<b  <<endl;
        cout<<endl;
        sum = a+b+x+y+z;
        cout<< " The sum of our five numbers is " <<sum <<endl;
        cout<<endl;
        cout <<"Impressed? :)" <<endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

time()返回NSUInteger,并在64位OS X平台上返回

  • NSUInteger定义为unsigned long和
  • unsigned long是一个64位无符号整数。
  • int是一个32位整数。

因此int是比NSUInteger“更小”的数据类型,因此编译器警告。

另请参阅“基础数据类型参考”中的NSUInteger:

构建32位应用程序时,NSUInteger是一个32位无符号整数。 64位应用程序将NSUInteger视为64位无符号整数。

要修复该编译器警告,您可以将本地计数变量声明为

NSUInteger count;

或(如果您确定您的数组永远不会包含超过2 ^ 31-1个元素!),请添加一个显式的强制转换:

srand((int)time(NULL));