2
respostas

3 números em vez de 2

Bom dia, poderiam me dizer porque nesse código aparece para colocar 3 números em vez de só 2?

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main() {
    setlocale (LC_ALL, "Portuguese");

    printf("Digite 2 numeros.\n");

    int num1;
    scanf("%d\n", &num1);

    int num2;
    scanf("%d\n", &num2);



}   

Vi que tirando o \n ele roda da forma que deveria, mas fiquei com essa dúvida.

2 respostas

Se você ler a documentação (que pode ser encontrada em http://www.cplusplus.com/reference/cstdio/scanf/) verá o comportamento da função. Na descrição dos parâmetros, poderá ver que:

C string that contains a sequence of characters that control how characters extracted from the stream are treated:

  • Whitespace character: the function will read and ignore any whitespace characters encountered before the next non-whitespace character (whitespace characters include spaces, newline and tab characters -- see isspace). A single whitespace in the format string validates any quantity of whitespace characters extracted from the stream (including none).
  • Non-whitespace character, except format specifier (%): Any character that is not either a whitespace character (blank, newline or tab) or part of a format specifier (which begin with a % character) causes the function to read the next character from the stream, compare it to this non-whitespace character and if it matches, it is discarded and the function continues with the next character of format. If the character does not match, the function fails, returning and leaving subsequent characters of the stream unread.
  • Format specifiers: A sequence formed by an initial percentage sign (%) indicates a format specifier, which is used to specify the type and format of the data to be retrieved from the stream and stored into the locations pointed by the additional arguments.

Na dúvida, sempre leia a documentação.

Não entendi muito bem, só entendi até a parte que dizia que iria ocorrer uma comparação, mas não entendi como seria essa comparação e nem no que ela poderia resultar, poderia me explicar novamente?