私はC言語に新しいので、おそらくシフト演算子を正しく使う方法を明確にしていないでしょう。 私はこのコードを書いた:C - shift power operation
0
0
0
0
0
0
1
1
それは私には、インデックスの2の累乗の結果を返します:私はこのコードから期待何
#include <stdio.h>
#define SIZE 8
int main() {
int a[ SIZE ] = {0};
int i;
int x = 1;
int sum = 0;
for (i = (SIZE - 1); i >= 0; i--){
scanf("%d", &a[ i ]);
}
for (i = 0;i < SIZE;i++) {
if (x & a[ i ])
sum = sum + (i << 1);
else
sum = (sum + 0);
}
printf ("%d\n\n", sum);
return 0;
}
は私がスタックにこの値を入力する場合ということです配列の これは、インデックス0が左に1ビットシフトされ、インデックス1が1ビット左にシフトされて2になります。
次に、値がsum変数に格納され、サイクルが終了すると、printfは合計この場合は3になるはずです。しかし、返される値は2です。
私が入力した場合:
1
0
0
0
0
0
0
0
返された値が14
あるので、ちょうど2つの入力を掛けるように私には思えます。私は何が間違っているのか理解していません。
...あなたはnow..youがそれいつの日かになります初心者です、心配しないでください。 'このプログラムでは絶対に何もしません。 'sum'は変更されず、副作用はありません。 – Logicrat
あなたは 'C'の初心者です。コードブロックをインデントします。後でそれが数行以上になると、あなた自身に感謝するでしょう。 – StoryTeller
あなたがしようとしていることは本当に決まりません。 – Guiroux