Вот небольшая программа для печати полномочий от 2 до 8. Но она не прекращается после 8. Пожалуйста, объясните причину.
#include <stdio.h>
#include <unistd.h>
int main(void)
{
unsigned int i=1;
while(1) {
i = i<<1;
printf("i = %d\n",i);
if(i==(2^8))
break;
sleep(1);
}
printf("Exited While loop.. \n");
return 0;
}
Петля не выходит, когда я = 2 ^ 8. Мой вывод выглядит примерно так:
i = 2
i = 4
i = 8
i = 16
i = 32
i = 64
i = 128
i = 256
i = 512 (Should have Exited here. But the program is continuing. Why?)
i = 1024
i = 2048
i = 4096....
EDIT:
Спасибо за ответ, что ^ - оператор XOR. Но теперь приведенный ниже код ведет себя странно. Объясните.
#include <stdio.h>
int main(void)
{
if((2)^8 == 1<<8) {
printf("True.. \n");
} else {
printf("False..!!");
}
return 0;
}
Вышеуказанная программа функций печатает true.