Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Simple C programming problem, variable stuck at initialised value

  1. Dec 16, 2013 #1
    Simple C programming problem, variable "stuck" at initialised value

    Hello!

    This is most likely an error in my code but I just can't see what it is! I am new to C programming and maybe I have just been staring at it for so long that I can't see the obvious error. I was playing around with a simple if statement; basically, the user enters three numbers assigned to the variables y, x and z and the programme identifies if x is equal to either y or z, or neither, and also prints on screen the values for y, x, and z, as follows:

    Code (Text):

    #include <stdio.h>

    //Declare and initialise variables
    short x = 0, y = 0, z = 0;

    main( void )
    {

    //User sets the variable values
    printf("Enter a value for y: \n");
    scanf("%d", &y);
    printf("Enter a value for x: \n");
    scanf("%d", &x);
    printf("Enter a value for z: \n");
    scanf("%d", &z);

    //Compare x to y and z
    if ((x==y) || (x==z))
    {printf("x is equal to either y or z");}
    else
    {printf("x is not equal to either");}

    //Print values of the three variables
    printf("\ny,x,z are equal to %d,%d,%d", y, x, z);
    }
    The peculiar thing is, no matter what is entered for y, the value appears to remain 0, as the final printf shows when the programme is run; consequently, the if statement takes y as always 0, so the statement seems to "work", but only with y set to 0. However, if I initialiase y to a different value, such as 5, it will change and the programme works fine. Why is it that when y is set to 0 to begin with it remains 0, but if I initialise it to a different value it works?

    I am using code blocks on a linux system if that is of any help.

    Thanks in advance.
     
  2. jcsd
  3. Dec 16, 2013 #2

    DrGreg

    User Avatar
    Science Advisor
    Gold Member

    x, y and z are declared as short int, but you are using "%d" to read and write their values. For short int you should use "%hd".
     
  4. Dec 16, 2013 #3
    Ah, thanks DrGreg. I haven't covered that yet: the only examples I have come across in the book I am using have used int and double with %d and %f. It's strange how it still works for some values! That threw me.

    Many thanks.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Simple C programming problem, variable stuck at initialised value
Loading...