Mostrando o resultado de sizeof

1. Mostrando o resultado de sizeof

???
gokernel

(usa Linux Mint)

Enviado em 23/04/2019 - 05:05h

Olá pessoal !!!

Se alguém quiser me ajudar, por gentileza compilar e executar esse programa em Windows 64 bits e Linux 64 Bits:

Quem tiver os 2 OS ... caso mostrar apenas o quem tem !!!


//-------------------------------------------------------------------
//
// Saida Windows 64 bits:
// ------------------------------------------------------------------
//
// 0: 0x0, 1: 0xe1, 2: 0xf5, 3: 0x5, 4: 0x64, 5: 0x64, 6: 0x64, 7: 0x64, 8: 0x64, 9: 0x64, 10: 0x64,
// sizeof(int): 4, sizeof(long): 4
//
//-------------------------------------------------------------------
//
// Saida Linux 64 bits:
// ------------------------------------------------------------------
//
// 0: 0x0, 1: 0xe1, 2: 0xf5, 3: 0x5, 4: 0x64, 5: 0x64, 6: 0x64, 7: 0x64, 8: 0x64, 9: 0x64, 10: 0x64,
// sizeof(int): 4, sizeof(long): 8
//
//-------------------------------------------------------------------
//
#include <stdio.h>

#define UC unsigned char

unsigned char buf[100] = { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
long l = 100000000;

void funcao() {
*(int*)buf = l;
printf("0: 0x%x, 1: 0x%x, 2: 0x%x, 3: 0x%x, 4: 0x%x, 5: 0x%x, 6: 0x%x, 7: 0x%x, 8: 0x%x, 9: 0x%x, 10: 0x%x,\n", (UC)buf[0], (UC)buf[1], (UC)buf[2], (UC)buf[3], (UC)buf[4], (UC)buf[5], (UC)buf[6], (UC)buf[7], (UC)buf[8], (UC)buf[9], (UC)buf[10] );
}

int main (void) {
funcao();
printf ("sizeof(int): %d, sizeof(long): %d\n", (int)sizeof(int), (int)sizeof(long));
return 0;
}


E o mais importante:
Postar o resultado da saida !!!

O resultado da minha saida:


Saida Windows 64 bits:
------------------------------------------------------------------
0: 0x0, 1: 0xe1, 2: 0xf5, 3: 0x5, 4: 0x64, 5: 0x64, 6: 0x64, 7: 0x64, 8: 0x64, 9: 0x64, 10: 0x64,
sizeof(int): 4, sizeof(long): 4
-------------------------------------------------------------------

Saida Linux 64 bits:
------------------------------------------------------------------
0: 0x0, 1: 0xe1, 2: 0xf5, 3: 0x5, 4: 0x64, 5: 0x64, 6: 0x64, 7: 0x64, 8: 0x64, 9: 0x64, 10: 0x64,
sizeof(int): 4, sizeof(long): 8
-------------------------------------------------------------------


Grato !!!



  


2. Re: Mostrando o resultado de sizeof

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/04/2019 - 06:34h

Não tenho como testar agora, mas veja o seguinte post no SO: https://stackoverflow.com/questions/384502/what-is-the-bit-size-of-long-on-64-bit-windows.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: Mostrando o resultado de sizeof

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/04/2019 - 07:09h

Por que aqueles casts nos argumentos de printf()? Não me parece muito útil uma (não-)conversão de unsigned char para unsigned char, ainda mias quando, o valor será reconvertido para int por causa das regras de passagem de argumentos em funções com argumentos variáveis.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


4. Re: Mostrando o resultado de sizeof

???
gokernel

(usa Linux Mint)

Enviado em 23/04/2019 - 11:15h

"Paulo1205", escreveu:

Por que aqueles casts nos argumentos de printf()? Não me parece muito útil uma (não-)conversão de unsigned char para unsigned char, ainda mias quando, o valor será reconvertido para int por causa das regras de passagem de argumentos em funções com argumentos variáveis.


Questão de costume(meu) mesmo ...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts