In C or C++ it's easy to made mistake in expression of conditional instruction and use assignment instead of comparison. It's presented in below snippet, where we want to check if x is equal to 6:
int main(){
int x;
/* first case */
/* OK */
if(x==6){
/* sth */
}
/* WRONG */
if(x=6){
/* sth */
}
/* second case */
/* OK */
if(x!=6){
/* sth */
}
/* WRONG */
if(x=!6){
/* sth */
}
return 0;
}
This code will be compiled successfully because its syntax is valid.
Those mistakes may be reduced by using following practice: while comparing something unmodifiable (string, number..) and variable, variable is written always on the right side. It's presented below:
int main(){
int x;
/* first case */
/* OK */
if(6==x){
/* sth */
}
/* WRONG */
if(6=x){
/* sth */
}
/* second case */
/* OK */
if(6!=x){
/* sth */
}
/* WRONG */
if(6=!x){
/* sth */
}
return 0;
}
Now conditional instructions with mistakes contain incorrect syntax and may be caught and fixed during compilation:
rgawron@foo:~$ gcc s2.c s2.c: In function ‘main’: s2.c:10: error: lvalue required as left operand of assignment s2.c:20: error: lvalue required as left operand of assignment
0 commentaires:
Post a Comment