帮我看看我哪错了,不应该输出2的乘方吗
#include<stdio.h>int main()
{
int a, b = 0;
printf("请输入一个整数:");
scanf_s("%d", &a);
while (b < a){
b++;
if ((2^b)<=a)
printf("%d\n", 2^b);
}printf("\n");
return 0;
}

#include<stdio.h> #include<math.h> int main() { int a, b = 0; printf("请输入一个整数:"); scanf("%d", &a); while (b < a){ b++; if (pow(2,b)<=a) printf("%f\n", pow(2,b)); }printf("\n"); return 0; }
#include<stdio.h> int my_pow(int a, int b) { int ans = 1; for (int i = 0; i < a; i++) { ans *= b; } return ans; } int main() { int a, b = 0; printf("请输入一个整数:"); scanf("%d", &a); while (b < a){ b++; if (my_pow(2,b)<=a) printf("%d\n", my_pow(2,b)); }printf("\n"); return 0;
#include <stdio.h> int main( void ) { int n; printf("请输入一个整数:"); scanf("%d", &n); for( int i=1; (1<<i)<=n; ++i ) printf( "%d\n", 1<<i ); }