Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
celsonasciutti

Conversão do tipo de dado

Recommended Posts

Eu tenho uma dúvida por que eu baixei alguns arquivos c++, e preciso converte para c.

tipo em c++ nos usamos byte será que em c usamos unsigned char, eles possuem o mesmo tamanho e outra coisa while(true) serve para os dois (c++ e c)?

declara valor booleano em c++ é bool  ex:

bool bCarryFlag = false;

como será em c?

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, celsonasciutti disse:

em c++ nos usamos byte será que em c usamos unsigned char, eles possuem o mesmo tamanho

Não sei te explicar nunca vi o tipo byte. Depende o que você quer guardar.

 

3 horas atrás, celsonasciutti disse:

while(true) serve para os dois (c++ e c)?

Se te referes a um bucle infinito sim.

 

 

3 horas atrás, celsonasciutti disse:

declara valor booleano em c++ é bool  ex:

bool bCarryFlag = false;

como será em c?

você pode usar um simples int tipo:
#define true 1
#define false 0
int bCarryFlag = false;

porém em C você pode dispor do tipo bool incluindo a biblioteca stdbool.h
#include <stdbool.h>

int main(){
bool umBool = true;
...



 

adicionado 7 minutos depois

Ao parecer o tal byte você pode fazer um define tipo typedef unsigned char BYTE; // 8-bit unsigned entity. conforme explica aqui, depois disso você tem o tipo BYTE.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Agora consegui entende vangodp

    Quando referimos byte em c++ podemos usar typedef unsigned char meubyte

    ex:

    type unsigned char Ctrbyte;

    Para o short eu posso usa qualquer um dos dois:

    unsigned short, unsigned short int?

    Ex de uma condição while

    while(true)

    if(bCarryFlag){
                        CTCopyBytes(ref nBytePos, ref nWorkPos, bSmallerBitWidth);

    Eu sou obrigado coloca esse ref pra condições em while

    Eu posso usa apenas sem ref

    CTCopyBytes(nBytePos, nWorkPos, bSmallerBitWidth);

     

    Editado por celsonasciutti
    correção

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    11 horas atrás, celsonasciutti disse:

    Para o short eu posso usa qualquer um dos dois:

    unsigned short, unsigned short int?

    Acho que isso você pode averiguar nessa tabela: https://msdn.microsoft.com/es-es/library/s3f49ktz(v=vs.90).aspx

     

    Aí você pode ver que unsigned short int é outro nome que se da para unsigned short ou vice versa, dois nomes para a mesma coisa, trata-se de um inteiro curto sem sinal de negativo(um numero positivo curto vamos).

     

    11 horas atrás, celsonasciutti disse:

    Ex de uma condição while

    while(true)

    if(bCarryFlag){
                        CTCopyBytes(ref nBytePos, ref nWorkPos, bSmallerBitWidth);

    Eu sou obrigado coloca esse ref pra condições em while

    Eu posso usa apenas sem ref

    CTCopyBytes(nBytePos, nWorkPos, bSmallerBitWidth);

    Nem sei que isso de ref vei kkk

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Muito Obrigado Vangodp entendi eu consegui entende unsigned short tanto faz usa um ou outro que é a mesma coisa, só mais uma coisa é uma duvida meio confusa ex:
     

    #include <stdio.h>
    #include <stdbool.h>
    void decompress(){
    unsigned long DecompressData(unsigned int nStartAddr)
    unsigned short nCompressedSize = (unsigned short) (RomData[nStartAddr] | (RomData[nStartAddr + 1] << 8));

    Eu precisava manter essa declaração no escopo

    unsigned short nCompressedSize = (unsigned short) (RomData[nStartAddr] | (RomData[nStartAddr + 1] << 8));

    Ele diz que nCompressSize enBytePos não foi declarado

    Error] 'nBytePos' was not declared in this scope

    [Error] 'nCompressedSize' was not declared in this scope.

    Eu precisava manter em parenteses e entre o colchete o que eu devo fazer?

    Editado por celsonasciutti

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    4 horas atrás, celsonasciutti disse:

    Eu precisava manter essa declaração no escopo

    unsigned short nCompressedSize = (unsigned short) (RomData[nStartAddr] | (RomData[nStartAddr + 1] << 8));

    Que escopo?

     

     

    4 horas atrás, celsonasciutti disse:

    Error] 'nBytePos' was not declared in this scope

    [Error] 'nCompressedSize' was not declared in this scope.

    Eu precisava manter em parenteses e entre o colchete o que eu devo fazer?

    Não entendo... talvez se pegar o programa todo possa lhe ajudar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Eu pretendo converte essa declaração de váriaveis para c

     

        ulong Dado Descomprimido(uint nStartAddr){
        bool bCarryFlag = false;
        ushort Tamanho Comprimido = (ushort) (DadoRom[nStartAddr] | (DadoRom[nStartAddr + 1] << 8));;
        uint BytePos = nStartAddr + 2;
        uint ByteAfter = nBytePos + nCompressedSize;
        byte Controle de bit;
        byte Byte;
        byte nMem0D;
        uint nWorkPos = 0;
        bool bSmallerBitWidth = false;
        if((DadoRom[nByteAfter] & 0xC0) != 0){
            bSmallerBitWidth = true;
            
        Controle de Bit = 8;
        while(true){

            if(nBytePos == nByteAfter){
                Byte = DadoRom nBytePos];
                Byte &= 0x3F;
                if(Byte == 0){
                    return nWorkPos;
                }
                Controle de Bit = Byte;
                bCarryFlag = false;
                nByteAfter = (uint) (nStartAddr + ((DadoRom[nBytePos + 2] << 8) | DadoRom[nBytePos + 1]));
                nBytePos += 3;
            }
            else{
                Byte = RomData[nBytePos];
            }

     

    Editado por celsonasciutti

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×