これは 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;
}
i = 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....
編集 :
答えてくれてありがとう ^ は XOR 演算子です。しかし、現在、以下のコードは奇妙な動作をしています。説明してください。
#include <stdio.h>
int main(void)
{
if((2)^8 == 1<<8) {
printf("True.. \n");
} else {
printf("False..!!");
}
return 0;
}
上記の関数プログラムは true を出力します。