João Vitor Alves Postado Março 21, 2021 Denunciar Share Postado Março 21, 2021 Se eu coloquei char nome[4] , ele não tera que ter um maximo de 4 caracteres ? porque o meu passa no exemplo eu coloquei joaooooooooooooooo, e mesmo assim foi. não teria que dar um erro ou não ir? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Março 22, 2021 Denunciar Share Postado Março 22, 2021 Em 21/03/2021 em 16:47, João Vitor Alves disse: ele não tera que ter um maximo de 4 caracteres ? Não! Da onde foi que você tirou isso? Em C não há mamãe. Se você declarar 4 e enfiar 100 o problema é seu. O que pode acontecer é que seu programa funcione ou não. Imaginou você aí todo contente... de ter feito o novo WhatsApp, e quando todo mundo descarregar ploff!? XDDD C e C++ a diferença de outras tantas linguagens é que se supõe que o programador tem tudo baixo controle. Onde outras linguagens abstraem coisas C é muito concreto. Em Java por exemplo você sai do índice e o programa já vai soltando mensagens. Parece ser que C/C++ esta feito por uma banda de macacos e que tem coisas que acontecem por como por arte de magia ou é questão de azar ou sorte. Pois bem.... deixe-me lhe dizer que nada é fruto do azar em c, e tudo tem um por que. Deixe me lhe ilustrar um caso e você vai começar a entender. Imagine um caso no qual você tenha uma matriz deste modo: 123 456 789 Claramente você vai precisar de um for double para mostrar isso: #include<stdio.h> int main(){ int i; int x; int m[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; for (i=0; i<3 ;i++ ){ for (x=0; x<3 ; x++ ){ printf("%d ", m[i][x]); } } return 0; } Pois bem... saiba que se conhecer algo de memória e como vai parar cada variável em esta, você pode se aproveitar e fazer o mesmo trabalho com um só for. #include<stdio.h> int main(){ int i; int m[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; for (i=0; i<3*3 ;i++ ){ printf("%d ", m[0][i]); } return 0; } A saída deste programa é exatamente a mesma do outro, eu só me aproveitei para realizar o mesmo trabalho com maior facilidade devido a minha maior experiência. Muito provavelmente nem seu professor conheça esse "macete", ou pode que sim, e pode que conheça alguns outros que eu nem tenha ouvido falar, como falei é coisa de experiência. Quanto mais você dominar a linguagem menos estranho você vai achar essas coisas. Um caso poderia ser que você escrevesse em uma variável e que mesmo saindo de rango fosse possivel escrever em outra variável que estivesse a continuação, não imagino um caso mas é perfeitamente legal em C, já em outras linguagens..... Procure sempre ter suficiente memória para sua entrada. Lembre que estamos falando de bytes. É ridículo tentar economizar bytes si qualquer computador de hoje tem minimo 4 gigas de RAM, sem isso certamente você nem arranca o wondows. Seu char nome[4] poderia ser perfeitamente char nome[1024] e seus programas ou sistema operativo nem iam sentir a menor dor XDDD E n precisa declarar 1024 em todas as variáveis. você pode ter uma variável como char buffer[1024], e logo você pode checar o tamanho logo após leitura e atribuir o que foi lido a outra como char nome[100], caso tiver mais de 100 chars em buffer não faça a copia de buffer para nome. Tendeu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 João Vitor Alves Postado Março 22, 2021 Autor Denunciar Share Postado Março 22, 2021 (editado) entendi obg #include<stdio.h> int main(){ int i; int x; int m[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; for (i=0; i<3 ;i++ ){ for (x=0; x<3 ; x++ ){ printf("%d ", m[i][x]); } } return 0; } Editado Março 22, 2021 por João Vitor Alves Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
João Vitor Alves
Se eu coloquei char nome[4] , ele não tera que ter um maximo de 4 caracteres ? porque o meu passa no exemplo eu coloquei joaooooooooooooooo, e mesmo assim foi.
não teria que dar um erro ou não ir?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.