[Programming Fundamentals] 3. Water Overflow
Случи ми се нещо много странно, докато решавах 3. Water Overflow (линк към Judge).
Събирах две short променливи в друг short, когато получих компилационна грешка.
Ето "некомпилиращият" се код:
short n = short.Parse(Console.ReadLine());
short capacity = 255;
short capacityLeft = capacity;
for (short i = 0; i < n; i++)
{
    short litersToPour = short.Parse(Console.ReadLine());
    if (capacityLeft - litersToPour >= 0)
    {
        capacityLeft -= litersToPour;
    }
    else
    {
        Console.WriteLine("Insufficient capacity!");
    }
}
short filled = capacity - capacityLeft;
Console.WriteLine(filled);
Реда, който гърми е:
short filled = capacity - capacityLeft;
Грешката, която ми дава е, че пропускам cast от int към short, при положение, че и двете променливи, които събирам са от тип short

Разбира се, никакъв проблем да сложа един cast:
short filled = (short)(capacity - capacityLeft);
Но първо искам да разбера, защо се получава това недоразумение за мен. Възможно е аз да пропускам нещо простичко, но благодаря предварително за помощта  
 
 , да го подкрепите с аргументация! Смятам, че темата е полезна и беше добре да се разясни този случай.
, да го подкрепите с аргументация! Смятам, че темата е полезна и беше добре да се разясни този случай.
кастването важи и за над 32 битови числа!
ако кажем long number = 1; 1 все още си е int, а най-лесния да го направил лонг е long number = 1L