SA-MP Forums Archive
Как записать число в свободную переменную? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Как записать число в свободную переменную? (/showthread.php?tid=272149)



Как записать число в свободную переменную? - safari - 27.07.2011

Добрый день!

Поскажите пожалуйста как записать в свободную переменную число?
например:

PHP код:
Global[MAX_PLAYERS][6]; 
И как сделать так чтоб в одну из переменных которая равна 0 записалось число?

Их получается 6

PHP код:
Global[playerid][0] = тут допустим 1;
Global[
playerid][1] = тут допустим 2;
Global[
playerid][2] = тут допустим 0;//записать сюда
Global[playerid][3] = тут допустим 3;
Global[
playerid][4] = тут допустим 0;//или записать сюда
Global[playerid][5] = тут допустим 6
Вот я как только что подумал сделать

пример;

PHP код:
for(new 0i<5i++)
    if(Global[
playerid][i]==0){
     Global[
playerid][i] = тут число;
     break;
    } 
правильно ли?


Re: Как записать число в свободную переменную? - Stepashka - 27.07.2011

верно, но если по умному то так:
pawn Код:
for ( new i, forcount = sizeof(Global[]); i < forcount ; i++)
{
    if ( !Global[playerid][i])
    {
        Global[playerid][i] = тут число;
        break;
    }
}



Re: Как записать число в свободную переменную? - Wyu - 28.07.2011

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
верно, но если по умному то так:
pawn Код:
for ( new i, forcount = sizeof(Global[]); i < forcount ; i++)
{
    if ( !Global[playerid][i])
    {
        Global[playerid][i] = тут число;
        break;
    }
}
И чем это лучше? Зачем здесь forcount? и чем ! лучше == 0? Последнее даже более ясно отражает суть этого выражения (сравнение с нулем) чем первое (проверка на ложность).


Re: Как записать число в свободную переменную? - Stepashka - 28.07.2011

Quote:
Originally Posted by Wyu
Посмотреть сообщение
И чем это лучше? Зачем здесь forcount? и чем ! лучше == 0? Последнее даже более ясно отражает суть этого выражения (сравнение с нулем) чем первое (проверка на ложность).
это логически Правильнее.
Чтобы не выполнять десяутки раз очень медленную sizeof.
Когда создал массив и не присвоил ему ничкакого значения, там не ноль, а NULL.


Re: Как записать число в свободную переменную? - 0x5A656578 - 28.07.2011

Ну вообще sizeof(x) - это выражение, значение которого известно еще этапе компиляции, так что в выходном байт-коде это будет всего лишь констатна, и о скорости выполнения тут говорить нет смысла


Re: Как записать число в свободную переменную? - Stepashka - 28.07.2011

Quote:
Originally Posted by 0x5A656578
Посмотреть сообщение
Ну вообще sizeof(x) - это выражение, значение которого известно еще этапе компиляции, так что в выходном байт-коде это будет всего лишь констатна, и о скорости выполнения тут говорить нет смысла
Чушь собачья, уже сто раз тут обсуждаось и доказывалось: sizeof это функция, которая каждый раз производить подсчет ячеек массива.
К тому же очень медленная.


Re: Как записать число в свободную переменную? - 0x5A656578 - 28.07.2011

ОК

pawn Код:
// sizeof.pwn
new a[0x1000];
main() {
    new x = sizeof(a);
}
> pawncc -d0 sizeof.pwn
> pawndisasm sizeof.amx

pawn Код:
// sizeof.lst
00000008  proc
0000000c  push.c 00001000 // new x = sizeof(a); 00001000 и есть размер
00000014  stack 00000004
0000001c  zero.pri
00000020  retn
Если это функция, то было бы где-то примерно так

pawn Код:
00000008  proc
0000000c  stack fffffffc
00000014  push.c 00000000
0000001c  push.c 00000004
00000024  call 00000068      // вызов sizeof()
0000002c  stor.s.pri fffffffc
00000034  stack 00000004
0000003c  zero.pri
00000040  retn



Re: Как записать число в свободную переменную? - ZiGGi - 28.07.2011

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Чушь собачья, уже сто раз тут обсуждаось и доказывалось: sizeof это функция, которая каждый раз производить подсчет ячеек массива.
К тому же очень медленная.
тогда как создаются переменные?
new a[5];
new b[ sizeof(a)+1 ];


Re: Как записать число в свободную переменную? - Stepashka - 28.07.2011

ок, пора в отпуск =(.


Re: Как записать число в свободную переменную? - safari - 29.07.2011

Cпасибо за столь внятное обЪяснение!!!