photo
+ Responder ao Tópico
Resultados de 1 a 1 de 1

Thread: Constantes de Caracteres

  1. #1 Fechar a publicação
    Banned
    Data de afiliação
    Aug 2018
    Postagens
    342
    Obrigado
    91
    Agradecimentos 449 Tempos em 220 Postagens

    Constantes de Caracteres

    Os caracteres como elementos de uma string,em MQL5, são índices do conjunto de caracteres Unicode. Eles são valores hexadecimais que podem ser convertidos para inteiros, e que podem ser manipulados por operações com inteiros como adição e subtração.

    Qualquer caractere único entre aspas simples ou um código hexadecimal ASCII de um caractere como '\x10' é um caractere constante e é do tipo ushort. Por exemplo, uma anotação do tipo '0' representa o valor numérico 30, que corresponde ao índice do zero na tabela de caracteres.

    Exemplo:

    void OnStart()
    {
    //--- define constantes de caracteres
    int symbol_0='0';
    int symbol_9=symbol_0+9; // obtém o símbolo '9'
    //--- valores de saída de constantes
    printf("Num formato decimal: symbol_0 = %d, symbol_9 = %d",symbol_0,symbol_9);
    printf("Num formato hexadecimal: symbol_0 = 0x%x, symbol_9 = 0x%x",symbol_0,symbol_9);
    //--- entrada de constantes em uma string
    string test="";
    StringSetCharacter(test,0,symbol_0);
    StringSetCharacter(test,1,symbol_9);
    //--- isso é como eles se apresentam em uma string
    Print(test);
    }

    Uma barra invertida (\) é um caractere de controle para o compilador ao lidar com strings constantes e constantes caracteres no texto fonte de um programa. Alguns símbolos, por exemplo uma aspas simples ('), aspas duplas ("), barra invertida (\) e caracteres de controle podem ser representados como combinação de símbolos que começam com uma barra invertida (\), de acordo com a tabela abaixo:

    Nome do Caractere

    Código Mnemônico ou imagem

    Anotação em MQL5

    Valor Numérico

    linha nova (line feed)

    LF

    '\n'

    10

    tab horizontal

    HT

    '\t'

    9

    retorno de carro

    CR

    '\r'

    13

    barra invertida

    \

    '\\'

    92

    aspas simples

    '

    '\''

    39

    aspas duplas

    "

    '\"'

    34

    código hexadecimal

    hhhh

    '\xhhhh'

    1 a 4 caracteres hexadecimais

    código decimal

    d

    '\d'

    número decimal de 0 a 65535

    Caso uma barra invertida seja seguida por outro caractere não descrito acima, o resultado é indefinido.

    Exemplo

    void OnStart()
    {
    //--- declara constantes de caracteres
    int a='A';
    int b='$';
    int c='©'; // código 0xA9
    int d='\xAE'; // código do símbolo ®
    //--- saída imprime constantes
    Print(a,b,c,d);
    //--- acrescenta um caractere na string
    string test="";
    StringSetCharacter(test,0,a);
    Print(test);
    //--- substitui um caractere na string
    StringSetCharacter(test,0,b);
    Print(test);
    //--- substitui um caractere na string
    StringSetCharacter(test,0,c);
    Print(test);
    //--- substitui um caractere na string
    StringSetCharacter(test,0,d);
    Print(test);
    //--- representa caracteres como número
    int a1=65;
    int b1=36;
    int c1=169;
    int d1=174;
    //--- acrescenta um caractere na string
    StringSetCharacter(test,1,a1);
    Print(test);
    //--- acrescenta um caractere na string
    StringSetCharacter(test,1,b1);
    Print(test);
    //--- acrescenta um caractere na string
    StringSetCharacter(test,1,c1);
    Print(test);
    //--- acrescenta um caractere na string
    StringSetCharacter(test,1,d1);
    Print(test);
    }

    Como foi mencionado acima, o valor de uma constante caractere (ou variável) é o valor do índice na tabela de caracteres. Sendo o índice um inteiro, pode ser escrito de diferentes maneiras.

    void OnStart()
    {
    //---
    int a=0xAE; // o código de ® corresponde ao literal '\xAE'
    int b=0x24; // o código de $ corresponde ao literal '\x24'
    int c=0xA9; // o código de © corresponde ao literal '\xA9'
    int d=0x263A; // o código de ☺ corresponde ao literal '\x263A'
    //--- mostrar valores
    Print(a,b,c,d);
    //--- acrescenta um caractere na string
    string test="";
    StringSetCharacter(test,0,a);
    Print(test);
    //--- substitui um caractere na string
    StringSetCharacter(test,0,b);
    Print(test);
    //--- substitui um caractere na string
    StringSetCharacter(test,0,c);
    Print(test);
    //--- substitui um caractere na string
    StringSetCharacter(test,0,d);
    Print(test);
    //--- código de terno cartão
    int a1=0x2660;
    int b1=0x2661;
    int c1=0x2662;
    int d1=0x2663;
    //--- acrescenta um caractere de espadas
    StringSetCharacter(test,1,a1);
    Print(test);
    //--- acrescenta um caractere de copas
    StringSetCharacter(test,2,b1);
    Print(test);
    //--- acrescenta um caractere de ouros
    StringSetCharacter(test,3,c1);
    Print(test);
    //--- acrescenta um caractere de paus
    StringSetCharacter(test,4,d1);
    Print(test);
    //--- Exemplo de literais de caractere em uma string
    test="Rainha\x2660Ás\x2662";
    printf("%s",test);
    }

    A representação internal de um literal de caractere é do tipo ushort. Constantes de caracteres podem aceitar valores de 0 a 65535.

    Though trading on financial markets involves high risk, it can still generate extra income in case you apply the right approach. By choosing a reliable broker such as InstaForex you get access to the international financial markets and open your way towards financial independence. You can sign up here.


  2. The Following User Says Thank You to forumforex For This Useful Post:

    Não registrado (1 )

+ Responder ao Tópico

Permissões de postagens

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts