Cout & printf [RESOLVIDO]

1. Cout & printf [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/04/2017 - 18:35h

Eu sou novo no mundo da programação e já estou progredindo rapidamente, estou a fazer um programa para jogos, mas me acostumei com o comando "printf "", eu vim da linguagem C e queria saber se tem problemas se eu usar o printf e scanf em todos os programas que vou fazer em C++.

(Ainda não estudei sobre o cout pois não achei relevante, já que havia pegado o printf no c++)


  


2. Re: Cout & printf [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/04/2017 - 22:57h

Pode usar printf() e scanf() com liberdade. Eles são parte da biblioteca oficial do C++ também.

A preferência por I/O em C++ é porque ela é ao mesmo tempo mais genérica e mais segura do que aquela feita com as funções herdadas do C, e isso através de uma sintaxe uniforme.

Com printf(), você só pode fazer operações de escrita de tipos nativos (e, mesmo assim, não todos: todo float acaba sendo convertido para double, e inteiros com tamanho menor do que sizeof(int) são convertidos para int) e de uns poucos tipos derivados comumente convencionados (como size_t e strings). Para escrever dados de outros tipos, você teria de criar funções específicas, com nomes distintos. Além do mais, com printf() você tem de fazer manualmente a correspondência entre os argumentos a serem impressos e os modos como cada um desses argumentos deve ser interpretado e impresso, por meio da string de formatação. Essa correspondência manual não raramente é fonte de erros.

O análogo vale para scanf(), na hora de realizar operações de entrada (exceto pelo fato de que, por trabalhar com ponteiros, não ocorrem as conversões de tipo indicadas acima; por outro lado, ganha-se a chance de errar o tipo de ponteiro passado à função).

Ao usar a forma C++, você acaba com a string de formatação (e sua interpretação, feita durante a cada execução do programa), substituindo-a por uma análise sintática feita apenas uma vez, durante a compilação, de acordo com o tipo de cada argumento. Além disso, acaba com a limitação de poder usar apenas tipos nativos: por meio do polimorfismo de sobrecarga de operadores, você pode criar funções que permitam fazer a escrita ou leitura de qualquer tipo de dados que você vier a criar.


3. Re: Cout & printf [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/04/2017 - 23:05h

Com printf(), você só pode fazer operações de escrita de tipos nativos (e, mesmo assim, não todos: todo float acaba sendo convertido para double,  


Exatamente isso oque eu queria saber, muito obrigado!