НЕ (~)против ОТРИЦАНИЯ (!)

#include <iostream>

using namespace std;
int main(int argc, char *argv[]) 
{
   int i=-5;
   while(~(i))
   {
      cout<<i;
      ++i;
   }

 }

Выход: -5, -4, -3, -2. Разве он не должен печатать значения до -1? Почему только до -2. И, пожалуйста, объясните мне разницу между операторами «не» и «отрицание». Когда я когда-либо пишу программу, они становились источником ошибок.

while(i)

Я знаю, что условие цикла будет истинным для положительных и отрицательных i, кроме 0.

while(!i) vs while(~i)

Для каких значений «i» выполняются два вышеуказанных цикла?

22
задан Sheraz Ahmad Khilji 4 August 2015 в 12:15
поделиться