Как записать число в свободную переменную? -
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 i = 0; i<5; i++)
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пасибо за столь внятное обЪяснение!!!