Ir ao conteúdo
  • Cadastre-se

Conversão do tipo de dado


celsonasciutti

Posts recomendados

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?

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

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);

 

Link para o comentário
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

 

Link para o comentário
Compartilhar em outros sites

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?

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

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];
        }

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...