Disclaimer: This is not essentially a productivity tip. But rather, something I experienced while coding.
The Context
I was casually sharing some programming differences to my friends. The programming language was C, the topic was:
Difference between if-else if
and if if
conditions.
And the code was like:
void main(){
// if-if statement
if(2+2 == 4){
printf("\nI execute because 2+2 is 4.");
}
if(5+3 == 8){
printf("\nI execute because 5+3 is 8.");
}
// if-else if statement
if(9+8 == 17){
printf("\nI execute because 9+8 is 17.");
}else if(9+3 = 12){
printf("\nI execute because 9+3 is 12.")
}
}
At first, I wanted to demonstrate the if-if statement. Therefore I commented the if-else if
statement out.
void main(){
// if-if statement
if(2+2 == 4){
printf("\nI execute because 2+2 is 4.");
}
if(5+3 == 8){
printf("\nI execute because 5+3 is 8.");
}
// if-else if statement
/*
if(9+8 == 17){
printf("\nI execute because 9+8 is 17.");
}else if(9+3 = 12){
printf("\nI execute because 9+3 is 12.")
}
*/
}
After the first demonstration, I had to demonstrate the if-else if
statement. So, in order to make it executable, obviously I had to uncomment it by removing those /* */
symbols (aka multiple line comment).
But, I being Rahul Dahal, had a crazy thought like,
"What if I put
//
(aka single line comment) before the/*
&*/
(multiple line comment start and end), to comment them out and make the text inside it executable ?"
Basically, I wanted to check if we can comment out a comment. So that comment will no longer be a comment.
I did that.
void main(){
// if-if statement
if(2+2 == 4){
printf("\nI execute because 2+2 is 4.");
}
if(5+3 == 8){
printf("\nI execute because 5+3 is 8.");
}
// if-else if statement
// /*
if(9+8 == 17){
printf("\nI execute because 9+8 is 17.");
}else if(9+3 = 12){
printf("\nI execute because 9+3 is 12.")
}
// */
}
And guess what, it worked!
That trick worked. As I expected.
But Why? Why did it work ?
Answer,
Actually what happens is, whatever we type after the comment starter (both //
& /*
), no matter what, the compiler understands it as a comment text.
That is why the /*
itself was treated as a normal text.
And since, /*
is treated as a normal text, the code after it will no longer be commented out. Hence, making it executable.
Top comments (1)
Great informative post euchre game Thanks for sharing your ideas. This is helpful