I have this snippet of the code
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
why I can't receive my Hello
thanks in advance!
how exactly compiler does this comparison if(str[0] == 1)
?
I have this snippet of the code
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
why I can't receive my Hello
thanks in advance!
how exactly compiler does this comparison if(str[0] == 1)
?
You want to do this:
if (str[0] == '1') ...
The difference is that you are comparing str[0]
to the number 1, while my code above is comparing str[0]
to the character '1'
(which has ASCII value 49). Not all programming languages treat characters and numbers interchangeably in this way, but C does.
Check out ASCII for more information about how computers map numbers to characters.
First the right way is to do this:
if(str[0] == '1')
Or :
if(str[0] == 49)
Second, you must take care of the difference between 1
and '1'
1
is a integer value...'1'
is a character whose ASCII equals 49Which means:
('1'==1)
is false !!
However ('1'==49)
is true !!
When you write '1'
in C/C++ it -automatically- be translated to the corresponding ASCII 49
, that is how '1'
is actually represented in C/C++
you need to ask
*str = “123”; if(str[0] == '1'') printf("Hello\n");
See those single quotes around 1? You ned to compare a character and you are comparing an integer.
Try using if(str[0] == '1')
instead of comparing with 1
what means one and true in C :)
This is because you are comparing the first character of str
to the number 1. The actual character code of '1'
is 49. So, either of these will work:
if (str[0] == '1')
if (str[0] == 49)
Remember that 1
isn't the same as '1'
. The first one is a number, the second one is a character. If you want to learn more about this, you should probably look here: http://en.wikipedia.org/wiki/Character_encoding