Precedenza degli operatori

di il
4 risposte

Precedenza degli operatori

Non so se è il posto giusto come sezione, diciamo che è una divagazione

Ho fatto due test in basic con varie versioni.

Se scrivo 

print 2*3^2

giustamente mi dice 18 risolvendo prima l'elevamento al quadrato.

Se scrivo 

print 2^3^2

mi dice 64, ma la precedenza non dovrebbe essere prima all'esponente, quindi dare 2^9?

4 Risposte

  • Re: Precedenza degli operatori

    https://learn.microsoft.com/it-it/dotnet/visual-basic/language-reference/operators/operator-precedence

    Associatività
    
    Quando gli operatori di uguale precedenza 
    vengono visualizzati insieme in un'espressione, 
    ad esempio la moltiplicazione e la divisione, 
    il compilatore valuta ogni operazione man
    mano che la rileva da sinistra a destra. 
  • Re: Precedenza degli operatori

    Nella potenza di potenza l'esponente è il prodotto dei due esponenti (che è commutativo), quindi 2^3^2=2^2^3=2^6=64.

    Anche rispettando la precedenza: (2^3)^2 = 8^2 = 64.

  • Re: Precedenza degli operatori

    La domanda era legittima perché

    (2^3)^2 = 8^2 = 64

    mentre

    2^(3^2) = 2^9 = 512

    Nel dubbio usate le parentesi e fate prima

  • Re: Precedenza degli operatori

    La soluzione giusta sembra che sia 512 perché si parte dall’esponente diciamo più esterno per poi scendere.
    Senza parentesi non è una potenza di potenze ma una potenza con esponente che viene elevato.

    Sarebbe come scrivere a^b

    a=2
    b=3^2

    è un discorso molto accademico che ho visto qualche tempo fa. In realtà in questi casi come suggerito da Weierstrass io uso le parentesi quando ci sono incertezze.

    Cmq grazie per le risposte e il tempo.

Devi accedere o registrarti per scrivere nel forum
4 risposte