aman_012's blog

By aman_012, history, 4 years ago, In English

Hello,

I was going through one of tourist submissions and i came across this small piece of code and i am really curious to know what it does. Whole code:

76505406

Thanks in advance!

  • Vote: I like it
  • -2
  • Vote: I do not like it

| Write comment?
»
4 years ago, # |
  Vote: I like it 0 Vote: I do not like it

!!(num) gives either 1 or 0.
Let's say if num!=0 then it returns 1 else it will return 0

»
4 years ago, # |
  Vote: I like it 0 Vote: I do not like it

It converts the value into boolean(0 or 1)

»
4 years ago, # |
  Vote: I like it +9 Vote: I do not like it

Just to be clear, !! isn't a function. It is two ! operators used together. He uses two of those to count the number of non-zero elements. You could do it in other ways too. If ! was being used on an object that has an operator overload for it, it'd be valid referring to it as a function.

How does it count number of non-zero elements?

The first ! (before cnt) checks if a number is 0 or not. If it is 0, the expression results in true, otherwise false. The second ! causes a true expression to result in false and false expression to result in true. So, in the end, a non-zero number ends up as boolean true or 1, and the opposite happens for zero i.e. it ends up as boolean false or 0.