Jump to content
killezio

incrementação de um valor na mesma condição

Recommended Posts

killezio

não sei que outro titulo lhe dar, mas aqui está a minha questão, eis o meu código:

if(*modelo[e][k++] != *dic[i][k])

eu estou a assumir que o <k> em <*dic[k]> já está incrementado por <*modelo[e][k++]>. estou certo?

Edited by killezio

Share this post


Link to post
Share on other sites
killezio

outra dúvida, eu posso fazer isto?

for (k = 0 && a = 0;k < L;k++ && a++){

se não, como se faz?

Share this post


Link to post
Share on other sites
HappyHippyHippo

não sei que outro titulo lhe dar, mas aqui está a minha questão, eis o meu código:

if(*modelo[e][k++] != *dic[i][k])

eu estou a assumir que o <k> em <*dic[k]> já está incrementado por <*modelo[e][k++]>. estou certo?

não

existe uma diferença muito significativa no uso do incremento como "prefixo" ou como "sufixo"

em vez de estar a escrever um texto de metro e meio, o melhor é apresentar um exemplo:

#include <stdio.h>

int main(void)
{
 int valor;

 valor = 0;
 printf("incremento como prefixo : %d\n", ++valor); // 1
 printf("resultado final : %d\n", valor);           // 1

 valor = 0;
 printf("incremento como sufixo : %d\n", valor++);  // 0
 printf("resultado final : %d\n", valor);           // 1

 return 0;
}

outra dúvida, eu posso fazer isto?

for (k = 0 && a = 0;k < L;k++ && a++){

se não, como se faz?

em C, existe um operador binário em que as duas expressões avaliadas mas o resultado final é o resultado da segunda avaliação.

como é um operador, pode ser usado como "cola" para teres mais do que uma expressão num local onde é esperado ter somente um resultado.

o que pretendes fazer é realizado da seguinte forma:


for (k = 0, a = 0; k < L; k++, a++) {
[/Code]


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
killezio

muito obrigado pelo esclarecimento. também, a diferença do k++ e ++k eu percebo. o que eu estava a pensar era, por exemplo se k = 2 e eu usasse essa linha, para "*modelo[e][k++]" k seria 2 e para "dic[k]" k seria já 3. a minha dúvida é se isso acontece

Share this post


Link to post
Share on other sites
HappyHippyHippo

muito obrigado pelo esclarecimento. também, a diferença do k++ e ++k eu percebo. o que eu estava a pensar era, por exemplo se k = 2 e eu usasse essa linha, para "*modelo[e][k++]" k seria 2 e para "dic[k]" k seria já 3. a minha dúvida é se isso acontece

a resposta a essa pergunta é : depende do operador.

isto porque estás a assumir que o operando esquerdo é avaliado primeiro que o direito. mas na realidade, depende do operador da expressão.

no teu caso, como é o operador != como é avaliado da esquerda para a direita, então isso acontece, mas não se pode dizer que seja igual para todos os casos.

para mais informação, vê na secção de precedência, coluna de associatividade no seguinte link

https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence

Edited by HappyHippyHippo
  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.