Блог пользователя aman_012

Автор aman_012, история, 4 года назад, По-английски

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!

  • Проголосовать: нравится
  • -2
  • Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

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

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

It converts the value into boolean(0 or 1)

»
4 года назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

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.