Вычислите в уме, что напечатает программа:
using System;
class Program
{
static void Main()
{
Console.WriteLine(long.MaxValue % int.MaxValue);
Console.WriteLine(long.MaxValue % short.MaxValue);
}
}
Здравствуйте, hexamino, Вы писали:
H>Вычислите в уме, что напечатает программа:
H>H>using System;
H>class Program
H>{
H> static void Main()
H> {
H> Console.WriteLine(long.MaxValue % int.MaxValue);
H> Console.WriteLine(long.MaxValue % short.MaxValue);
H> }
H>}
H>
Честно в уме показалось что 0 и 0. Да?
Здравствуйте, hexamino, Вы писали:
h> Вычислите в уме, что напечатает программа:
Console.WriteLine(long.MaxValue % int.MaxValue);
=int.MaxValue
Console.WriteLine(long.MaxValue % short.MaxValue);
= int.MaxValue * short.MaxValue
Здравствуйте, hexamino, Вы писали:
h> AP>=int.MaxValue
h> остаток должен быть меньше делителя, разве не так?
нда, опять не внимательно условие прочитал.
заинтересовался, решил перепроверить.
результаты увидел и хотел бы пояснений
long 64b — int 32b — short 16b
соотношение размера 4 — 2 — 1
Здравствуйте, Kore Sar, Вы писали:
KS>Здравствуйте, hexamino, Вы писали:
H>>Вычислите в уме, что напечатает программа:
H>>H>>using System;
H>>class Program
H>>{
H>> static void Main()
H>> {
H>> Console.WriteLine(long.MaxValue % int.MaxValue);
H>> Console.WriteLine(long.MaxValue % short.MaxValue);
H>> }
H>>}
H>>
KS>Честно в уме показалось что 0 и 0. Да?
Те же грабли.

Однако это было бы правильным если бы у всех типов участвующих в фокусе впереди стояла маленькая буква
u. А так — они ж знаковые, собаки. Не с F, а с 7-ки начинаются(в старшем разряде). В общем жду отгадку — как ТАКОЕ в уме просчитывать. Автор — шаман?
Здравствуйте, Smarty, Вы писали:
S> В общем жду отгадку — как ТАКОЕ в уме просчитывать. Автор — шаман?
Ну, решение для первой строчки почти очевидно:
(2^63 - 1)%(2^31 - 1) = (2*(2^31)^2 - 2 + 1)%(2^31 - 1) = (2*((2^31)^2 - 1^2) + 1)%(2^31-1) = (2*(2^31 + 1)*(2^31 - 1) + 1)%(2^31 - 1) = 1