tag:blogger.com,1999:blog-6926985245178197542.post760906807603594096..comments2024-03-23T15:34:28.415-07:00Comments on C Progressivo: A função sizeof() e os blocos vizinhos de memóriaUnknownnoreply@blogger.comBlogger15125tag:blogger.com,1999:blog-6926985245178197542.post-72172065425918159142022-01-31T03:24:29.262-08:002022-01-31T03:24:29.262-08:00Sarah, acredito que a resposta nao esta vindo a te...Sarah, acredito que a resposta nao esta vindo a tempo, mas que isso seja um lembrete para nao deixar as coisas pra fazer de ultima hora.<br /><br />O motivo de usar " %d" eh que nao eh o conteudo das variaveis do tipo char que esta sendo exibido, mas sim o endereco das variaveis do tipo char, que sempre eh um valor inteiro.<br /><br />& sempre vai retornar um inteiro que corresponde ao endereco da variavel que vem logo apos o &Anonymoushttps://www.blogger.com/profile/01703775044292664379noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-57611106945577586772021-12-08T22:24:01.452-08:002021-12-08T22:24:01.452-08:00Pode ser que eu tenha deixado algo passar (estou l...Pode ser que eu tenha deixado algo passar (estou lendo esse blog na correria por razões de fim de semestre), mas não entendi o motivo de no primeiro código as variáveis do tipo char (caractere1 e caractere2) são escritas como '' %d '' no printf, já que %d é leitor de inteiro. Alguém sabe me dizer o porquê? No livro de C do Luís Damas, ele diz que é perigoso fazer isso e pode resultar em errossarahhttps://www.blogger.com/profile/18364820084279993109noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-24182305848691405882020-08-08T23:24:18.516-07:002020-08-08T23:24:18.516-07:00Até onde eu saiba, se criar int X, y; não necessar...Até onde eu saiba, se criar int X, y; não necessariamente ficarão um ao lado do outro, embora provavelmente fiquem. Deve ficar ao lado se declarar um vetor int x[10]; aí, sim, x[0] Ficar ao lado de x[1]. É o maior endereço vai depender da arquitetura do processador. Alguns processadores almoçam os bits invertidos. Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-21842421803402102642016-12-07T08:59:04.141-08:002016-12-07T08:59:04.141-08:00/* Eu NÃO percebi nenhum sequênciamento nos endere...<br />/* Eu NÃO percebi nenhum sequênciamento nos endereços de memória. Pra mim, continuaram aleatórios. O que houve com o endereço para 'Caracteres' ?? */<br /><br />// As saídas foram essas:<br /><br />// Caracteres: u@ ( e ïu@ (<br />// Inteiros: 0x28ff18 e 0x28ff14<br />// Floats: 0x28ff10 e 0x28ff0c<br />// Doubles: 0x28ff00 e 0x28fef8 <br />Unknownhttps://www.blogger.com/profile/17518132909268955098noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-44716564994776926822016-04-25T05:18:14.989-07:002016-04-25T05:18:14.989-07:00Para quem quer ficar livre dos warnings, use o %p ...Para quem quer ficar livre dos warnings, use o %p ao invés de %d. Abs!Christopherhttps://www.blogger.com/profile/13966662971959680118noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-80498481798602916842016-04-11T16:26:15.072-07:002016-04-11T16:26:15.072-07:00Uma coisa interessante é que independente de onde ...Uma coisa interessante é que independente de onde você declare ou realize o print das variáveis a alocação de memória é conforme descrito no texto por agrupamento de tipo, sendo sequencial.<br /><br />Acredito que seja devido ao "compile and executing".<br /><br />O compilador lê o programa inteiro e depois o executa por pilha de atividades, sendo assim ordenando automáticamente as posições de memória. (Posso estar errado em meus argumentos, se alguém souber complementar ou corrigir minha análise lógica... )<br /><br />Enfim, bons estudos a todos e obrigado pelo curso, estou aprendendo bastante.Gabrielnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-37356986492180909462015-10-28T07:41:47.571-07:002015-10-28T07:41:47.571-07:00Na verdade, quando se trata de endereços de memóri...Na verdade, quando se trata de endereços de memória, alguns compiladores não aceitam o especificador de formato %d, nesse caso como no próprio aviso informa tem que ser usado um numero inteiro sem sinal, ou seja o %u.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-42698674414967576532015-08-31T16:16:01.121-07:002015-08-31T16:16:01.121-07:00Um detalhe interessante que pude notar é que o C n...Um detalhe interessante que pude notar é que o C não indexa na memória por ordem de declaração no código.<br /><br />Isto é, se eu declaro dois ints e depois dois chars, ele não indexa primeiro os ints e depois os chars, mas o contrário.<br /><br />Pelo que vi, a ordem fica:<br />- char<br />- int<br />- float<br />- doubleStanley Sathlerhttps://www.blogger.com/profile/03748195544141504218noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-65354045952252592402015-08-14T09:33:47.240-07:002015-08-14T09:33:47.240-07:00Os blocos de memória são separados em ordem decres...Os blocos de memória são separados em ordem decrescente.<br /> Anonymoushttps://www.blogger.com/profile/09360567017369661141noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-36010288563102110742015-04-21T16:54:26.692-07:002015-04-21T16:54:26.692-07:00Realmente %d, %c e %f são pra int, char e float, r...Realmente %d, %c e %f são pra int, char e float, respectivamente. Pra double é %lf.<br />Mas o que se está mandando imprimir é endereço de memória, não char ou float ou outra coisa.<br />Outra coisa, warning não é erro.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-59160328125778984722014-11-17T07:10:49.807-08:002014-11-17T07:10:49.807-08:00quanto aos erros, para int é %d, char é %c, float ...quanto aos erros, para int é %d, char é %c, float e double é %f, se usar %d em todos vai dar erro em char,float e double, só vai funcionar para intAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-3496584950306100132014-10-23T19:18:59.767-07:002014-10-23T19:18:59.767-07:00no primeiro exemplo da função sizeof()
o gcc dá e...no primeiro exemplo da função sizeof() <br />o gcc dá esta mensagem de erro:<br />sizeof.c:15:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]<br /> printf("Char: %d bytes\n",sizeof(char));<br /> ^<br />sizeof.c:16:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]<br /> printf("Int: %d bytes\n",sizeof(int));<br /> ^<br />sizeof.c:17:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]<br /> printf("Float: %d bytes\n",sizeof(float));<br /> ^<br />sizeof.c:18:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]<br /> printf("Double: %d bytes\n",sizeof(double)); <br />no DEV - C não dá.eduardonoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-9078532448798739782014-10-22T06:19:00.953-07:002014-10-22T06:19:00.953-07:00No gcc do ubuntu o primeiro exemplo da função size...No gcc do ubuntu o primeiro exemplo da função sizeof dá esta mensagem de erro para os quatro tipos - char,int,float,double.<br />format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]<br /> printf("Double: %d bytes\n",sizeof(double))<br />No dev - c não dá.eduardonoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-20015773518485710292014-08-09T12:54:37.416-07:002014-08-09T12:54:37.416-07:00é que cada variável ocupa 4 Bytes de memória, entã...é que cada variável ocupa 4 Bytes de memória, então soma mais quatro de uma para outra, se for Double soma mais oito, char soma mais uma...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-54114142996443587252014-05-31T18:33:07.355-07:002014-05-31T18:33:07.355-07:00uma coisa que percebi é que a primeira variável de...uma coisa que percebi é que a primeira variável declarada sempre o numero do seu endereço é maior que a da segunda, por quê?Anonymousnoreply@blogger.com