This is my current programm in which i take 3 different (or the same) values of N Natural Numbers and calculate their checksum, the usage of long datatype is a must as i also need to be able to calculate the checksum of values that exceed the MAX of int. I cant change the datatype. Now I also need to catch when the user enters a a non natural numbers e.g -23, 2.3 ... Ive made if statements that catch if a negative number and a number that exceeds the MAX of long is entered, the actual problem is that when i enter decimal numbers it skips my if conditions and prints out the printf functions but not any of the other functions, ive tried catching the decimal number with x % 1 !=0 which does not work because the actual value of x doesnt seem to be stored as a decimal but rather a whole number , ive confirmed this in various places in my programm by printing the value of x. Im really new to C barely 2 weeks into studying and havent really grasped everything, but i really just cant seem to find the problem in my Programm. I know my code looks like spaghetti code.
P.S Excuse my awful english
#include <stdio.h>
#include <stdlib.h>
int checksum(long q){
    long countingVariable = 0;
    while(q > 0)
    {
        countingVariable += q%10; // steht für sx = s + q%10
        q/=10;     // steht für q = q/10
    }
    return countingVariable;
}
int main(void) {
    long x,y,z;
    long long max_long = 2147483647;
    printf("Bitte geben sie ihre erste Zahl ein:\n"); // enter first number
    scanf("%ld",&x);
    long sx = quersumme_1(x); // checksum of x first number
    if ( x > 0 && x < max_long && x % 1 != 0){    // check if positive  and natural number
        printf("Bitte geben Sie ihre zweite Zahl ein:\n"); //enter second number
        scanf("%ld",&y);
        if (y > 0 && y < max_long){
            long sy = quersumme_2(y); //checksum of y second number
            printf("Bitte geben sie ihre dritte Zahl ein:\n");// enter third number
            scanf("%ld",&z);
            if (z > 0 && z < max_long){
                long sz = quersumme_3(z); // checksum of z 3rd number
                if (sx>sy && sx>sz && sy>=sz){
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",x,sx);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",y,sy);
                    printf("die Quersumme s der Zahl %ld ist %ld\n",z,sz);
                } else if (sx>sy && sx>z && sz>sy){
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",x,sx);
                    printf("die Quersumme s der Zahl %ld ist %ld\n",z,sz);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",y,sy);
                } else if (sy>sx && sy>sz && sx>=sz){
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",y,sy);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",x,sx);
                    printf("die Quersumme s der Zahl %ld ist %ld\n",z,sz);
                } else if (sy>sx && sy>sz && sz>sx){
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",y,sy);
                    printf("die Quersumme s der Zahl %ld ist %ld\n",z,sz);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",x,sx);
                } else if(sz>sx && sz>sy && sx>=sy){
                    printf("die Quersumme s der Zahl %ld ist %ld\n",z,sz);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",x,sx);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",y,sy);
                } else if(sz>sx && sz>sy && sy>sx){
                    printf("die Quersumme s der Zahl %ld ist %ld\n",z,sz);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",y,sy);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",x,sx);
                } else if (sx==sy && sx==sz && sy==sz){
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",x,sx);
                    printf("Die Quersumme s der Zahl %ld ist %ld\n",y,sy);
                    printf("die Quersumme s der Zahl %ld ist %ld\n",z,sz);
                }
// the big if tree is just a sorting "algorithm" it sorts the values of checksums 
            }if (z < 0){ //check for negative number z
                printf("Falsche Eingabe: Minus Zahl"); //error
                exit(0);
            }if (z > max_long){ // cant exceed Max value of long
                printf("Falsche Eingabe: Zahl overflowed long");// error
                exit(0);
            }
        }if (y < 0){ //check for negative number y
            printf("Falsche Eingabe: Minus Zahl"); // error
            exit(0);
        }if (abs(y) > max_long){ // cant ewxceed max value of long
            printf("Falsche Eingabe: Zahl overflowed long"); /error
            exit(0);
        }
    }if (x < 0){ //check for negative numbers
        printf("Falsche Eingabe: Minus Zahl"); // error
        printf("%ld",x);
        exit(0);
    }
    if (x > max_long){ // cant exceed max of long
        printf("Falsche Eingabe: Zahl overflowed long"); // error
        exit(0);
    }
    return 0;
}
 
     
    