Normalmente solicitamos um valor ao usuário e esperamos que o usuário digite o valor conforme o tipo solicitado. Os algoritmos em linguagem C a seguir são duas formas de tratar a leitura de um número e determinar se o valor digitado era um número inteiro (int) ou real (float).
Primeira forma – utilizar uma variável auxiliar
A ideia é criar uma variável auxiliar inteira que receberá o valor digitado. Quando um valor float é atribuído a uma variável inteira, apenas a parte inteira consegue ser armazenada. Por isso, se o teste de igualdade resultar em true, significa que o valor fornecido era um número inteiro.
#include<stdio.h>
int main (){
float valor;
int aux;
printf("Digite o numero");
scanf("%f",&valor);
aux = valor;
if (aux == valor){
printf("O numero digitado era inteiro");
} else {
printf("O numero digitado nao era inteiro");
}
return 0;
}
Segunda forma – utilizando casting
Casting de tipo de dado (type casting) permite converter um variável de um tipo em outro tipo. Nesse caso, o código abaixo utiliza o casting na hora de testar o valor. Se o valor digitado for igual a apenas a parte inteira dele mesmo, isso quer dizer que o valor digitado era um inteiro.
#include<stdio.h>
int main (){
float valor;
printf("Digite o numero");
scanf("%f",&valor);
if (valor == (int)valor){ //casting da variável para inteiro
printf("O numero digitado era inteiro");
} else {
printf("O numero digitado nao era inteiro");
}
return 0;
}