![](https://forum.scriptbrasil.com.br/uploads/set_resources_1/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
Eric MGS
Membros-
Total de itens
4 -
Registro em
-
Última visita
Sobre Eric MGS
![](https://forum.scriptbrasil.com.br/uploads/.gif)
Eric MGS's Achievements
0
Reputação
-
É que estou fazendo um programa que mostra o tamanho de cada tipo de dados na máquina, porque li que em cada máquina pode ser diferente, logo seria somente pra verificação antes de começar a programar em uma máquina que não conheço. E ele estava ficando muito grande: /////////////////////////////////////////////////////////////////////////////////////// // TAMANHO DE TIPOS // // Programa para saber a quantidade de memória ocupada por cada tipo de dados // // Eric MGS // // 08_12_2017 // /////////////////////////////////////////////////////////////////////////////////////// #include <stdio.h> #include <math.h> void main (void) { int tamanho, intervalo; //CHAR/SIGNED CHAR tamanho = sizeof (char); intervalo = (pow(2,8*tamanho)-1); printf ("CHAR/SIGNED CHAR:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2); //UNSIGNED CHAR tamanho = sizeof (unsigned char); intervalo = (pow(2,8*tamanho)-1); printf ("UNSIGNED CHAR:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: 0 a %i\n\n",intervalo); //SHORT/SHORT INT/SIGNED SHORT/SIGNED SHORT INT tamanho = sizeof (short); intervalo = (pow(2,8*tamanho)-1); printf ("SHORT/SHORT INT/SIGNED SHORT/SIGNED SHORT INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2); //UNSIGNED SHORT/UNSIGNED SHORT INT tamanho = sizeof (unsigned short); intervalo = (pow(2,8*tamanho)-1); printf ("UNSIGNED SHORT/UNSIGNED SHORT INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: 0 a %i\n\n",intervalo); //INT/SIGNED/SIGNED INT tamanho = sizeof (int); intervalo = (pow(2,8*tamanho)-1); printf ("INT/SIGNED/SIGNED INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2); //UNSIGNED/UNSIGNED INT tamanho = sizeof (unsigned); intervalo = (pow(2,8*tamanho)-1); printf ("UNSIGNED/UNSIGNED INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: 0 a %i\n\n",intervalo); //LONG/LONG INT/SIGNED LONG/SIGNED LONG INT tamanho = sizeof (long); intervalo = (pow(2,8*tamanho)-1); printf ("LONG/LONG INT/SIGNED LONG/SIGNED LONG INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2); //UNSIGNED LONG/UNSIGNED LONG INT tamanho = sizeof (unsigned long); intervalo = (pow(2,8*tamanho)-1); printf ("UNSIGNED LONG/UNSIGNED LONG INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: 0 a %i\n\n",intervalo); //LONG LONG/LONG LONG INT/SIGNED LONG LONG/SIGNED LONG LONG INT tamanho = sizeof (long long); intervalo = (pow(2,8*tamanho)-1); printf ("LONG LONG/LONG LONG INT/SIGNED LONG LONG/SIGNED LONG LONG INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2); //UNSIGNED LONG LONG/UNSIGNED LONG LONG INT tamanho = sizeof (unsigned long long); intervalo = (pow(2,8*tamanho)-1); printf ("UNSIGNED LONG LONG/UNSIGNED LONG LONG INT:\n"); printf ("Tamanho em bytes: %i\n",tamanho); printf ("Intervalo: 0 a %i\n\n",intervalo); } E ainda falta o float, double e long double, então queria saber se dava pra fazer dessa forma que perguntei para diminuir o tamanho, sem precisar repetir os blocos de cada tipo que tem o mesmo código, mudando apenas no sizeof . Quanto ao int32, não sabia sobre isso, é só com o int que dá pra fazer isso?
-
É, logo imaginei que não teria como fazer isso com essa função. Mas ainda estou começando com a linguagem C e ainda não sei sobre ponteiros, muito menos criar funções. Então fica mais frente. Muito obrigado pela atenção. Pode fechar o tópico.
-
Na verdade o que eu gostaria de saber não é o tamanho de um tipo e nem o tamanho de um string. Eu gostaria de saber se é possível fazer com a função sizeof o seguinte: char texto[4] = "int"; sizeof (texto); Onde em sizeof (texto) seria o mesmo que sizeof (int), porque o conteúdo de texto é "int" Portanto com esse trecho de código eu gostaria de receber o valor do tamanho de int e não de char como acontece. O que posso alterar? Sequencia de escape não deu certo.
-
//Programa que imprime a memória utilizada por tipos de dados #include <stdio.h> void rotina (char texto[6]) { int tamanho = sizeof (texto); printf ("%s:\n",texto); printf ("Tamanho em bytes: %i\n\n",tamanho); } void main (void){ rotina ("char"); rotina ("int"); rotina ("float"); } Boa tarde, Estou querendo fazer um programa que imprima a quantidade de memória em bytes que cada tipo de dados ocupa (porque em máquinas diferentes os valores podem ser diferentes). Inicialmente escrevi o código apenas com a função main, repetindo o printf para cada tipo de dado, da seguinte forma: ... printf ("Tamanho em bytes: %i \n", sizeof (char); printf ("Tamanho em bytes: %i \n", sizeof (int); ... Deu certo, Porém depois decidi tentar usar uma outra função para não precisar repetir o printf e fiz da maneira em que coloquei o código aqui. O retorno que o programa está dando é sempre 4 bytes, ou seja, o tamanho de char texto[6]. Já percebi que o problema é que em sizeof (texto) o valor que está sendo devolvido é o tamanho da variável texto, mas gostaria que no lugar de texto fosse inserido o conteúdo da variável, ou seja, as strings "char", "int" , "float" , para que fosse retornado o tamanho de cada tipo de dado respectivo. Tentei escrever no lugar de sizeof (texto) assim: sizeof ("%s",texto); Porém não deu certo. Gostaria de saber se existe alguma maneira de que no parâmetro de sizeof fosse inserido o conteúdo da variável (string) e não a própria variável. Agradeço se alguém souber responder.