// PascalABC.NET 3.1, сборка 1230 от 27.04.2016 function FS(a,b:real):=0.5*a*b; begin var a,b:real; Write('Катеты первого треугольника: '); Read(a,b); var S1:=FS(a,b); Write('Катеты второго треугольника: '); Read(a,b); var S2:=FS(a,b); if S1>S2 then Writeln('Площадь первого треугольника больше') else if S1<S2 then Writeln('Площадь второго треугольника больше') else Writeln('Площади треугольников равны') end.
Тестовое решение Катеты первого треугольника: 4.18 6 Катеты второго треугольника: 5.4 3.9 Площадь первого треугольника больше
sizeof - это оператор, принимающий какой-то тип или переменную и возвращающий количество байт, занимаемое в памяти этой переменной. Грубо говоря - Вы просите швею измерить Вашу талию: даёте ей измерить себя, а в ответ получаете обхват талии. Отсюда и выходит ответ, что занимаемое место в памяти типом byte равняется 1 байту.
Более глубокое объяснение происхождения числа 1
Нам понадобится формула , где N - это количество информации, а i - количество бит, отведённое на неё. У нас есть промежуток - это значения от 0 до 127. Всего значений получается 128. Если не верите - пересчитайте. Итак, подставим:
Мы получили количество бит, которое впритык занимает переменная в памяти. К радости, компьютеры устроены так, что память не делится на выделяемое переменной пространство (не создаются ячейки по 7 бит, 9 бит, 11 бит и так далее). Если программа выделила под переменную 7 бит, то компьютер выделит 2³ бит (8 бит ⇒ 1 байт), в котором переменная будет хорошо себя чувствовать и не тесниться. Приведу ещё пример для ясности:
Если переменная занимает 122 бита (это фантастика, но для примера сойдёт), то выделится 2⁷, поскольку:
2⁶ < 122 < 2⁷. Почему не 2⁶? Было бы смешно, если переменная, которая занимает 122 бит, занимала бы ячейку памяти в 64 бит. Это то же самое, если бы Вы поместили слона в коробку из-под спичек. Почему не 2⁸ или, например, не 2⁹⁹⁹⁹⁹⁹? А зачем компьютеру выделять такое пространство, если можно выделить наименьшее и быть в плюсе? Это то же самое, если бы Вы выделили для муравья десятиэтажный дом.
function FS(a,b:real):=0.5*a*b;
begin
var a,b:real;
Write('Катеты первого треугольника: '); Read(a,b);
var S1:=FS(a,b);
Write('Катеты второго треугольника: '); Read(a,b);
var S2:=FS(a,b);
if S1>S2 then Writeln('Площадь первого треугольника больше')
else
if S1<S2 then Writeln('Площадь второго треугольника больше')
else Writeln('Площади треугольников равны')
end.
Тестовое решение
Катеты первого треугольника: 4.18 6
Катеты второго треугольника: 5.4 3.9
Площадь первого треугольника больше
Я обращусь к низкоуровневому C++. У него нет типа byte, зато аналог ему - это unsigned char. Напишем простенькую программу:
#include <iostream>int main() { std::cout << sizeof(unsigned char); return 0;}Выполним её и получим ответом число 1.
Что это и откуда оно взялось?sizeof - это оператор, принимающий какой-то тип или переменную и возвращающий количество байт, занимаемое в памяти этой переменной. Грубо говоря - Вы просите швею измерить Вашу талию: даёте ей измерить себя, а в ответ получаете обхват талии. Отсюда и выходит ответ, что занимаемое место в памяти типом byte равняется 1 байту.
Более глубокое объяснение происхождения числа 1Нам понадобится формула , где N - это количество информации, а i - количество бит, отведённое на неё. У нас есть промежуток - это значения от 0 до 127. Всего значений получается 128. Если не верите - пересчитайте. Итак, подставим:
Мы получили количество бит, которое впритык занимает переменная в памяти. К радости, компьютеры устроены так, что память не делится на выделяемое переменной пространство (не создаются ячейки по 7 бит, 9 бит, 11 бит и так далее). Если программа выделила под переменную 7 бит, то компьютер выделит 2³ бит (8 бит ⇒ 1 байт), в котором переменная будет хорошо себя чувствовать и не тесниться. Приведу ещё пример для ясности:
Если переменная занимает 122 бита (это фантастика, но для примера сойдёт), то выделится 2⁷, поскольку:
2⁶ < 122 < 2⁷. Почему не 2⁶? Было бы смешно, если переменная, которая занимает 122 бит, занимала бы ячейку памяти в 64 бит. Это то же самое, если бы Вы поместили слона в коробку из-под спичек. Почему не 2⁸ или, например, не 2⁹⁹⁹⁹⁹⁹? А зачем компьютеру выделять такое пространство, если можно выделить наименьшее и быть в плюсе? Это то же самое, если бы Вы выделили для муравья десятиэтажный дом.
ответ1 байт