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

Добрый день!

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

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;
    } 
правильно ли?
Reply
#2

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

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? Последнее даже более ясно отражает суть этого выражения (сравнение с нулем) чем первое (проверка на ложность).
Reply
#4

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

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

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

ОК

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
Reply
#8

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)