I'm new to C and I made a simple program that gets two numbers and prints the sum of them:
// Programa que faz uma soma simples
#include <stdio.h>
// Função principal do programa
int main( void )
{
int num1, num2, soma;
printf("Entre com o primeiro número\n"); // Exibe texto na tela
scanf("%d", &num1); // Lẽ o valor e o atribui a num1
printf("Entre com o segundo número\n");
scanf("%d", &num2);
soma = num1 + num2;
printf("A soma é %d\n", soma);
} // fim da função main
I compiled with gcc and it worked normally, but out of curiosity I decided to do some experiments. When the program requested an input, instead of typing an integer value I put an arithmetic expression and to my surprise did not it work? When I enter a sum or subtraction on the first entry it does not request a second entry and prints the result of the operation:
$./soma
Entre com o primeiro número
8+10
Entre com o segundo número
A soma é 18
When I enter with an arithmetic expression in the second scanf, the program adds the value of the first entry with the first number of the expression, ignoring the rest:
$./soma
Entre com o primeiro número
5
Entre com o segundo número
2+9
A soma é 7
The strange happens when I try to enter an expression involving multiplication or a floating point number, in which case the program simply returns a random value:
$./soma
Entre com o primeiro número
3*2
Entre com o segundo número
A soma é 1714397539
$./soma
Entre com o primeiro número
3*2
Entre com o segundo número
A soma é 98186483
$./soma
Entre com o primeiro número
3.4
Entre com o segundo número
A soma é 229452083
My question is: Why this strange result when multiplication is involved?