- #1
nobahar
- 497
- 2
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:
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.
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:
#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.