«Деление на постоянный ноль»? Microsoft Visual C # - PullRequest
1 голос
/ 28 июля 2011

Почему я получаю сообщение об ошибке « Ошибка 1, деление на постоянный ноль 25 17 ConsoleApplication3 »

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Higher, Lower... What is the highest possible number that you're thinking of?");
            string b = Console.ReadLine(); 
            int f = int.Parse(b);//   F = THE MAX #
            Random computerguess = new Random();
            int computerGuess = computerguess.Next(f);
            Console.WriteLine(computerGuess);
            Console.WriteLine("if your number is higher than the number displaid above, then press the '1' key so I guess higher. if your number is lower press the '0' (down) as in telling the comp to go down/lower");
            string I = Console.ReadLine();            
            int G = int.Parse(I);
            int H = 1/2;

            if (G == 0)
            {
                computerGuess = computerGuess * H;                    
                Console.WriteLine(computerGuess);
            }

            Console.Read();
        }
    }
}

Ответы [ 4 ]

3 голосов
/ 28 июля 2011

Поскольку

int H = 1/2;

устанавливает H в 0: 0,5 с округлением до ближайшего целого числа.

3 голосов
/ 28 июля 2011

Вы делаете целочисленное деление:

int H = 1/2;

Это всегда будет ноль.Вместо этого используйте десятичное число:

decimal H = 0.5M;

, а затем приведите свой computerGuess обратно к int:

..
computerGuess = (int)(computerGuess * H);
2 голосов
/ 28 июля 2011

Я не получаю это сообщение об ошибке, когда пытаюсь скомпилировать ваш код.

Сообщение об ошибке может быть немного вводящим в заблуждение.Это строка 25, которая фактически не делится на ноль:

int H = 1/2;

Вы делите целые числа, поэтому результат будет нулевым.Это вычисление выполняется компилятором, поэтому сгенерированный код эквивалентен:

int H = 0;

Вы, вероятно, получите предупреждение, потому что результат, скорее всего, не предназначен.

0 голосов
/ 28 июля 2011

О линии ...

int H = 1/2;

Вы пытаетесь сохранить значение с плавающей запятой 0,5 внутри целочисленной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...