Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8

Тема: char

  1. #1
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±

    char

    В продолжительном сраче беседе в теме на одном форуме, появился вопрос: char - это оператор или все таки тип данных и есть ли в Pawn вообще типы данных?

    .pdf документация к языку говорит одно



    wiki говорит другое

    http://wiki.sa-mp.com/wiki/Keywords:Operators#char

  2. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    char - тип данных. Любая документация по ЯП это констатирует.

  3. Пользователь сказал cпасибо:
    Desulaid (13.07.2015)
  4. #3
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    char - тип данных. Любая документация по ЯП это констатирует.
    В pawn это не тип...

  5. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Нет в Pawn типов данных, как в других языках. Даже в документации указано, что это бестиповый язык.
    Единственный тип данных, поэерживаемый компилятором Pawn - целочисленный. Есть ещё Float, но он объявлен в одном из стандартных инклудов Pawn (технически это пользовательское пространство), в компиляторе этот тип не определён. Тип bool определён в компиляторе, но это всего лишь синтаксический сахар, на практике этот тип абсолютно бесполезен: переменным целочисленного типа можно присвоить true/false, а булевым переменным - целочисленные значения. С данными типа Float такое не прокатит только потому, что название типа начинается с заглавной буквы (да, вот такой странный признак для задания строгой/нестрогой типизации), кроме того для Float переопределён оператор "=" и если попытаться присвоить вещественной переменной целочисленное значение, будет произведён неявный вызов функции float() для конвертации целого числа в вещественное.

    Что же касается char, то это всего лишь оператор, который означает, что число перед ним нужно поделить на количество байт в ячейках (4 в версии для SA:MP, но в других может быть и по 8 байт, вот здесь, например).
    Обычно его используют в указании размера массивов:
    PHP код:
    new arr[32 char]; // массив 8 ячеек (32 байт) 
    Но ничто не мешает использовать этот оператор в других случаях:
    PHP код:
    new 32 char// x = 8 
    Стоит заметить, что это не просто деление на 4. "3 char" вернёт 1, а не 0, "5 char" - 2 и т.д.
    Без оператора char указанный выше 2-й пример будет выглядеть так:
    PHP код:
    // допустим, будет 4 (имейте в виду, что, как я уже говорил, в других реализациях значение может меняться,
    // так что не указывайте число 4 в явном виде, только через константы, иначе нарушите переносимость кода)
    const BYTES_PER_CELL cellbits charbits;

    // макрос для вычисления кол-ва ячеек
    #define tobytes(%0) ((%0) + BYTES_PER_CELL - 1) / BYTES_PER_CELL

    // x = 8
    new tobytes(32); 
    Здесь cellbits и charbits - встроенные константы Pawn, определённые в компиляторе наравне с __Pawn (указывает версию компилятора, для стандартного pawncc из комплекта сервера SA:MP это 0x0302, для версии от Zeex - 0x030A), debug (уровень отладки, с которым скомпилирован скрипт, указывается в ключе компилятора -d), cellmin, cellmax, charmin, charmax, ucharmax, true, false и EOS (а также __line и __compat в версии от Zeex).


    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    char - тип данных. Любая документация по ЯП это констатирует.
    Назовите номер страницы в документации, где вы это нашли.

    Цитата Сообщение от Darge Посмотреть сообщение
    .pdf документация к языку говорит одно
    Цитата Сообщение от Darge Посмотреть сообщение
    Позвольте поинтересоватьтся, там хоть где-нибудь сказано, что char - это тип данных? И к какой версии Pawn документация, к 4.0? В ней довольно много отличий от версии 3.2, которой уже давно нет на сайте разработчика Pawn (насколько помню, в комплекте YSI сохранились документы по 3.2). Кстати, если у вас доки к версии 4.0, не могли бы залить их на какой-нибудь хостинг? Недавно они тоже куда-то пропали с сайта разработчика, ссылки не рабочие.
    И да, что за "форум"? Govno-Info, "игровой портал о программировании в Pawno"? Первым в голову приходит именно он, ведь обычно это там во весь голос твердят, что например "весь код лучше писать в одну строку, так оптимизированнее!" или "командные процессоры нагружают сервер, лучше делать strcmp по over9000 раз" и т.п. (орфографические ошибки, капс и ядовитый цветной шрифт в цитатах убраны для удобства читателей). Но если я ошибся, убедительная просьба к вам написать название форума в ЛС.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. Пользователь сказал cпасибо:
    $continue$ (13.07.2015)
  7. #5
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Нет в Pawn типов данных, как в других языках. Даже в документации указано, что это бестиповый язык.
    Единственный тип данных, поэерживаемый компилятором Pawn - целочисленный. Есть ещё Float, но он объявлен в одном из стандартных инклудов Pawn (технически это пользовательское пространство), в компиляторе этот тип не определён. Тип bool определён в компиляторе, но это всего лишь синтаксический сахар, на практике этот тип абсолютно бесполезен: переменным целочисленного типа можно присвоить true/false, а булевым переменным - целочисленные значения. С данными типа Float такое не прокатит только потому, что название типа начинается с заглавной буквы (да, вот такой странный признак для задания строгой/нестрогой типизации), кроме того для Float переопределён оператор "=" и если попытаться присвоить вещественной переменной целочисленное значение, будет произведён неявный вызов функции float() для конвертации целого числа в вещественное.

    Что же касается char, то это всего лишь оператор, который означает, что число перед ним нужно поделить на количество байт в ячейках (4 в версии для SA:MP, но в других может быть и по 8 байт, вот здесь, например).
    Обычно его используют в указании размера массивов:
    PHP код:
    new arr[32 char]; // массив 8 ячеек (32 байт) 
    Но ничто не мешает использовать этот оператор в других случаях:
    PHP код:
    new 32 char// x = 8 
    Стоит заметить, что это не просто деление на 4. "3 char" вернёт 1, а не 0, "5 char" - 2 и т.д.
    Без оператора char указанный выше 2-й пример будет выглядеть так:
    PHP код:
    // допустим, будет 4 (имейте в виду, что, как я уже говорил, в других реализациях значение может меняться,
    // так что не указывайте число 4 в явном виде, только через константы, иначе нарушите переносимость кода)
    const BYTES_PER_CELL cellbits charbits;

    // макрос для вычисления кол-ва ячеек
    #define tobytes(%0) ((%0) + BYTES_PER_CELL - 1) / BYTES_PER_CELL

    // x = 8
    new tobytes(32); 
    Здесь cellbits и charbits - встроенные константы Pawn, определённые в компиляторе наравне с __Pawn (указывает версию компилятора, для стандартного pawncc из комплекта сервера SA:MP это 0x0302, для версии от Zeex - 0x030A), debug (уровень отладки, с которым скомпилирован скрипт, указывается в ключе компилятора -d), cellmin, cellmax, charmin, charmax, ucharmax, true, false и EOS (а также __line и __compat в версии от Zeex).



    Назовите номер страницы в документации, где вы это нашли.



    Позвольте поинтересоватьтся, там хоть где-нибудь сказано, что char - это тип данных? И к какой версии Pawn документация, к 4.0? В ней довольно много отличий от версии 3.2, которой уже давно нет на сайте разработчика Pawn (насколько помню, в комплекте YSI сохранились документы по 3.2). Кстати, если у вас доки к версии 4.0, не могли бы залить их на какой-нибудь хостинг? Недавно они тоже куда-то пропали с сайта разработчика, ссылки не рабочие.
    И да, что за "форум"? Govno-Info, "игровой портал о программировании в Pawno"? Первым в голову приходит именно он, ведь обычно это там во весь голос твердят, что например "весь код лучше писать в одну строку, так оптимизированнее!" или "командные процессоры нагружают сервер, лучше делать strcmp по over9000 раз" и т.п. (орфографические ошибки, капс и ядовитый цветной шрифт в цитатах убраны для удобства читателей). Но если я ошибся, убедительная просьба к вам написать название форума в ЛС.
    Не знаю, как в Pawn, но в нормальных ЯП это тип

  8. #6
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Нет в Pawn типов данных, как в других языках. Даже в документации указано, что это бестиповый язык.
    Единственный тип данных, поэерживаемый компилятором Pawn - целочисленный. Есть ещё Float, но он объявлен в одном из стандартных инклудов Pawn (технически это пользовательское пространство), в компиляторе этот тип не определён. Тип bool определён в компиляторе, но это всего лишь синтаксический сахар, на практике этот тип абсолютно бесполезен: переменным целочисленного типа можно присвоить true/false, а булевым переменным - целочисленные значения. С данными типа Float такое не прокатит только потому, что название типа начинается с заглавной буквы (да, вот такой странный признак для задания строгой/нестрогой типизации), кроме того для Float переопределён оператор "=" и если попытаться присвоить вещественной переменной целочисленное значение, будет произведён неявный вызов функции float() для конвертации целого числа в вещественное.

    Что же касается char, то это всего лишь оператор, который означает, что число перед ним нужно поделить на количество байт в ячейках (4 в версии для SA:MP, но в других может быть и по 8 байт, вот здесь, например).
    Обычно его используют в указании размера массивов:
    PHP код:
    new arr[32 char]; // массив 8 ячеек (32 байт) 
    Но ничто не мешает использовать этот оператор в других случаях:
    PHP код:
    new 32 char// x = 8 
    Стоит заметить, что это не просто деление на 4. "3 char" вернёт 1, а не 0, "5 char" - 2 и т.д.
    Без оператора char указанный выше 2-й пример будет выглядеть так:
    PHP код:
    // допустим, будет 4 (имейте в виду, что, как я уже говорил, в других реализациях значение может меняться,
    // так что не указывайте число 4 в явном виде, только через константы, иначе нарушите переносимость кода)
    const BYTES_PER_CELL cellbits charbits;

    // макрос для вычисления кол-ва ячеек
    #define tobytes(%0) ((%0) + BYTES_PER_CELL - 1) / BYTES_PER_CELL

    // x = 8
    new tobytes(32); 
    Здесь cellbits и charbits - встроенные константы Pawn, определённые в компиляторе наравне с __Pawn (указывает версию компилятора, для стандартного pawncc из комплекта сервера SA:MP это 0x0302, для версии от Zeex - 0x030A), debug (уровень отладки, с которым скомпилирован скрипт, указывается в ключе компилятора -d), cellmin, cellmax, charmin, charmax, ucharmax, true, false и EOS (а также __line и __compat в версии от Zeex).



    Назовите номер страницы в документации, где вы это нашли.



    Позвольте поинтересоватьтся, там хоть где-нибудь сказано, что char - это тип данных? И к какой версии Pawn документация, к 4.0? В ней довольно много отличий от версии 3.2, которой уже давно нет на сайте разработчика Pawn (насколько помню, в комплекте YSI сохранились документы по 3.2). Кстати, если у вас доки к версии 4.0, не могли бы залить их на какой-нибудь хостинг? Недавно они тоже куда-то пропали с сайта разработчика, ссылки не рабочие.
    И да, что за "форум"? Govno-Info, "игровой портал о программировании в Pawno"? Первым в голову приходит именно он, ведь обычно это там во весь голос твердят, что например "весь код лучше писать в одну строку, так оптимизированнее!" или "командные процессоры нагружают сервер, лучше делать strcmp по over9000 раз" и т.п. (орфографические ошибки, капс и ядовитый цветной шрифт в цитатах убраны для удобства читателей). Но если я ошибся, убедительная просьба к вам написать название форума в ЛС.
    Вот например здесь указано, что char - тип. И да, ты угадал, тот таинственный форум - это G-I. Что касается версии книги, то я без понятия. Книга за июнь 2011 года. Там о версии я ничего не нашел.

  9. #7
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Darge Посмотреть сообщение
    Вот например здесь указано, что char - тип. И да, ты угадал, тот таинственный форум - это G-I. Что касается версии книги, то я без понятия. Книга за июнь 2011 года. Там о версии я ничего не нашел.
    Это плюсы...

  10. #8
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Держите ту книгу: завладеть литературой

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •