# Reordenação de Operandos

A linguagem C não garante que as operações dentro de uma expressão sejam realizadas na ordem em que aparecem no código. Por exemplo, na expressão:

```c
foo () + bar ()
```

`foo` pode ser chamada primeiro ou `bar` pode ser chamada primeiro. Se `foo` atualiza um dado e `bar` usa esse dado, os resultados podem ser imprevisíveis.

A ordem imprevisível de cálculo de subexpressões também faz diferença quando uma delas contém uma atribuição. Já vimos este exemplo de código problemático:

```c
x = 20;
printf ("%d %d\n", x, x = 4);
```

Nesse caso, o segundo argumento, `x`, pode ter um valor diferente dependendo se ele for computado antes ou depois da atribuição no terceiro argumento.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mentebinaria.gitbook.io/manual-da-linguagem-gnu-c/10.-ordem-de-execucao/reordenacao-de-operandos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
