Jump to content

Erro memset


polska

Recommended Posts

Boas pessoal, estava a usar o memset em 3 arrays de ints:

memset(first, 1, sizeof(first))

memset(on, -1, sizeof(on))

memset(off, -1, sizeof(on))

Os dois últimos memset funcionaram e os arrays ficaram com -1, mas o primeiro fica com números esquesitos, tipo 164165948... Alguma ajuda?

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Link to comment
Share on other sites

podes por todo o código que vem antes ... principalmente a declaração dos arrays e alguma inicialização que por ventura terás ?

#include <stdio.h>
#include <string.h>
int main()
{
int lamps[10], on[2], off[2];
int N, C, input, last, i, k;

memset(lamps, 1, sizeof(lamps));
memset(on, -1, sizeof(on));
memset(off, -1, sizeof(off));

Não tenho inicialização nenhum relativamente aos arrays, apenas tenho o memset

Será 16843009?

16843009, em binário, é 1000000010000000100000001

Sim, é isso mesmo xD , não dá para colocar 1?

Edited by polska

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Link to comment
Share on other sites

Sim, é isso mesmo xD , não dá para colocar 1?

Não. O memset funciona ao nível dos bytes (8 bits) e os ints são 4 bytes (32 bits).

Os únicos que funcionam são o 0 e o -1 porque 0 é representado como 32 bits a 0 e o -1 é representado como 32 bits a 1.

  • Vote 1

"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Link to comment
Share on other sites

Não. O memset funciona ao nível dos bytes (8 bits) e os ints são 4 bytes (32 bits).

Os únicos que funcionam são o 0 e o -1 porque 0 é representado como 32 bits a 0 e o -1 é representado como 32 bits a 1.

Obrigado 😉, e ao pmg e Happy também.

Edited by polska

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.