[Solved] Why am I getting an output of always 1 in the below code


N is uninitialised meaning N could have any integer value. That unknown value is copied to M, and then scanf() called to assign a value to N.

The program needs to verify that system calls (like scanf()) has done what was expected with user input.

Below is a “better” version that tries to protect itself to an extent.

int main() { // it's okay to use whitespace to enhance readability.
    int N, M;
    if( scanf( "%d", &N ) != 1 )
        printf( "scanf didn't assign a value!\n" );

    M = N;

    printf( "%d\n", M );

    getchar();

    return 0;
}

Notice what happens when a user does something unexpected. This is the output

fifteen
scanf didn't assign a value!
22

ALWAYS validate user input before using it.

5

solved Why am I getting an output of always 1 in the below code