два минуса означают тире только у тебя, у остальных это означает два минуса
что означают два тире?
--
означают тире. хочется понять, по какому принципу в языке работает данная возможность.
MyStruct b();
-- это объявление функции b без параметров, возвращающей MyStruct.(void)
, а потребовали бы писать (void)
явно, то этой проблемы бы не было. нормальной? Это как?
mov ah, 0ah
mov dx, firstNum
int 21h
lea bx, firstNum
call A1
mov first, ax
mov ah, 0ah
mov dx, firstNum
int 21h
lea bx, firstNum
call A1
mov second, ax
mov ax, first
call Show_AX
mov ax, second
call Show_AX
...
A1:
push si
push di
...
pop di
pop si
ret
Show_AX:
push ax
push cx
push dx
push di
...
pop di
pop dx
pop cx
pop ax
ret
...
first: dw 0
second: dw 0
mov dx, firstNum
загружает значение из памяти вместо адреса, по крайней мере, если ассемблировать tasm'ом. mov надо заменить на lea чтобы работало правильно:mov ah, 0ah
lea dx, firstNum
int 21h
mov ah, 02h
mov dx, 10
int 21h
lea bx, firstNum
.A2:
xor dx, dx
mov dl, [bx+si]
sub dl, '0'
add ax, dx
mul di
inc si
loop .A2
.A2:
mul di
xor dx, dx
mov dl, [bx+si]
sub dl, '0'
add ax, dx
inc si
loop .A2
нет
одно из требований - конструктор по умолчанию.
Square_matrix(unsigned int size = 1)
этому требованию полностью соответствует. Square_matrix::Square_matrix()
, объявление конструктора Square_matrix::Square_matrix(unsigned int size)
сделать таким: Square_matrix(unsigned int size = 1)
, выкинуть из его кода обработку специального случая size == 1
. И я правильно понимаю так как код выполнения и стековые данные лежат в одной программной памяти, можно столько записать в стек что перезапишется область кода?
И если я приделаю к микроконтроллеру клавиатуру для получения кода от пользователя и напрямую запихаю все эти полученные данные в стек то возможно ситуация что пользователь может взять и хакнуть микроконтроллер методом "переполнения буфера" и открыть мой сейф?
edward_freedom, мне норм.