{"id":709,"date":"2018-05-22T15:05:13","date_gmt":"2018-05-22T18:05:13","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=709"},"modified":"2021-08-03T08:15:17","modified_gmt":"2021-08-03T11:15:17","slug":"diferenca-entre-operador-incremento-antes-depois","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/diferenca-entre-operador-incremento-antes-depois\/","title":{"rendered":"Qual a diferen\u00e7a entre x++ e ++x ?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u00c9 bastante comum em algum momento que se est\u00e1 aprendendo uma linguagem que possua o operador de incremento, como \u00e9 o caso da linguagem C, a pessoa se perceber da forma diferente de uso do operador e se perguntar se existe alguma diferen\u00e7a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Muitas pessoas n\u00e3o percebem a diferen\u00e7a entre essas duas formas de uso do operador de incremento, isso porque aprendem o uso do operador&nbsp; aplicando em situa\u00e7\u00f5es onde n\u00e3o existe qualquer efeito da diferen\u00e7a. Para exemplificar, considere o c\u00f3digo abaixo.<\/p>\n\n\n\n<pre class=\"wp-block-code lang:c decode:true\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n\nint main()\n{\n    int x=0, y=0;\n    x++;\n    ++y;\n    printf(\"x: %i \\n y: %i\", x, y);\n    return 0;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Veja que nesse c\u00f3digo, as vari\u00e1veis utilizam o operador de incremento antes e depois da vari\u00e1vel e o resultado \u00e9 exatamente o mesmo, onde ambas as vari\u00e1veis exibem o valor 1. Isso gera a err\u00f4nea impress\u00e3o de que n\u00e3o existe diferen\u00e7a entre as duas formas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Agora considere o c\u00f3digo abaixo. Nele a diferen\u00e7a \u00e9 que o incremento est\u00e1 sendo realizado no momento do printf. Veja que a execu\u00e7\u00e3o desse c\u00f3digo mostra valores diferentes no primeiro printf. Para complementar, veja que o segundo printf, que somente mostra os valores das vari\u00e1veis, exibe que ambas as vari\u00e1veis possuem o mesmo valor.<\/p>\n\n\n\n<pre class=\"wp-block-code lang:c decode:true\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n\nint main()\n{\n    int x=0, y=0;\n    printf(\"x: %i \\n y: %i\", x++, ++y);\n    printf(\"\\n\\n x: %i \\n y: %i\", x, y);\n    return 0;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A diferen\u00e7a na posi\u00e7\u00e3o do operador de incremento pode ser pontuada da seguinte maneira:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>quando se utiliza <em>variavel++<\/em> \u00e9 inicialmente utilizado o conte\u00fado da vari\u00e1vel e depois incrementada a vari\u00e1vel.<\/li><li>quando se utiliza <em>++variavel<\/em> \u00e9 inicialmente incrementada a vari\u00e1vel e depois utilizado o conte\u00fado.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplificando atrav\u00e9s do \u00faltimo c\u00f3digo, quando \u00e9 dado o printf de <em>++y<\/em>, inicialmente \u00e9 incrementado o valor da vari\u00e1vel <em>y<\/em> (que passa de zero para 1) e depois mostrado o valor da vari\u00e1vel. Com o printf de <em>x++<\/em>, inicialmente \u00e9 mostrado o valor da vari\u00e1vel (no caso, o valor zero) e depois incrementado o valor de <em>x<\/em> (que passa de zero para 1). Por isso o resultado do primeiro printf mostra valores diferentes para x e y, embora o segundo printf mostre que as vari\u00e1veis, ap\u00f3s o t\u00e9rmino do primeiro printf, possuem o mesmo valor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em tempo, o mesmo comportamento ocorre com o operador de decremento.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c9 bastante comum em algum momento que se est\u00e1 aprendendo uma linguagem que possua o operador de incremento, como \u00e9 o caso da linguagem C, a pessoa se perceber da forma diferente de uso do operador e se perguntar se existe alguma diferen\u00e7a. Muitas pessoas n\u00e3o percebem a diferen\u00e7a entre essas duas formas de uso [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[51],"class_list":["post-709","post","type-post","status-publish","format-standard","hentry","category-c","tag-operadores"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/comments?post=709"}],"version-history":[{"count":6,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/709\/revisions"}],"predecessor-version":[{"id":1119,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/709\/revisions\/1119"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=709"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}