Erros, bugs, perguntas - página 2868

 
Vladimir Simakov:
Não, a lógica dos criadores é compreensível, mas para mim, prefiro especificar u'y' explicitamente eu próprio, quando e se eu precisar

Só não é claro como é que o tipo de carta é derrotado.

 
Um erro de compilação:
void OnStart()
{
        Print(typename( char(0))); //Error: '0' - some operator expected
}

mas por aqui:

        Print(typename((char)0) ); //нормально

Que diferença é que isso faz?

 
A100:
Erro de compilação:

mas por aqui:

Que diferença é que isso faz?

Parece que apenas "(tipo) valor" é uma conversão de tipo, mas "tipo (valor)" é um tipo de inicialização, que no seu caso não pode devolver nada. Não abre μl há muito tempo, no entanto ))

 
Alexandr Andreev:

Em µl, apenas "(tipo) valor" parece ser uma conversão de tipo, mas "tipo (valor)" é um tipo de inicialização, que no seu caso não pode devolver nada. Não abre μl há muito tempo, no entanto ))

Por isso abrahttps://www.mql5.com/ru/docs/basis/types/casting

Unidade: Conversão de tipos numéricos."A conversão do tipo explícito é escrita da seguinte forma"... mais adiante no texto

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

Sim, verifiquei-o também, lembro-me de me ter deparado com isto há muito tempo atrás, sobre o que escrevi acima. Peço desculpa pela informação errada).

 
A100:
Erro de compilação:

mas por aqui:

Que diferença é que isso faz?

Sim, isto é também um erro de compilação

#define  J '+'          // char

void OnStart()
{
    Print((typename)J);
}
#define  J '+'          // char

void OnStart()
{
    Print((typename)(J));
}
 
Vladimir Simakov:
A lógica dos criadores é bastante clara mas, quanto a mim, é melhor especificar claramente "u'y" quando e se eu precisar

Não compreendo esta lógica. Quando há uma optimização total em todo o lado e em toda a parte, e redução de recursos como prioridade,
porquê fazer com que o tipo de carácter básico em Unicode o aumente para 2 bytes.
Daí que o tipo de cordel mql se torne caro.
De facto, seria melhor ter um especificador adicional u'sh'

char por um fantasma do tipo apenas para ser substituído.

#define  J (char)'+'     // char

void OnStart()
{
    Print(J);           // 43
    Print(typename(J)); // char
}

Mas, neste caso, temos uma diferença de tipos.

#define  J '+'              

void OnStart()
{
   Print(J);                // 43
   Print(typename(J));      // ushort
   Print(typename(char));   // char
}

É uma verdadeira confusão com este Unicode.

 
Roman:

Sim, isto é também um erro de compilação.

Tem um erro de sintaxe - dê-nos um exemplo de código de trabalho com (nome datilografado) entre parênteses. Também pode escrever (OnStart) entre parênteses

 

Outro exemplo de mensagem questionável do compilador MQL:

#ifdef __MQL__
void OnStart() {
{
}
#endif //Error: '#endif' - unexpected end of program

o que é que #endif tem a ver com isto - e como adivinhar onde está realmente o erro?

na altura C++ informa sobre o erro

#ifdef __cplusplus
void OnStart() {
{
} //Error: expected '}' at end of input
#endif
 

Espero que os desenvolvedores de mql estejam a ler esta página.

Quando é que vão fazer um validador normal?

Há um bug no validador para mt4. É impossível obter preços de abertura/fecho, dados de Hi/Low candles de outros períodos de tempo.

Razão: