この簡単な質問で申し訳ありませんが、私はそれを解決することはできません...
例があります:
int a[10] = {6, 7.8, 8.0, -6, -5.7, 5, 5.7};
std::cout << a[6 % 8 / 4 + 21 % 9];
応答として-5が返されますが、理由がわかりません。
この簡単な質問で申し訳ありませんが、私はそれを解決することはできません...
例があります:
int a[10] = {6, 7.8, 8.0, -6, -5.7, 5, 5.7};
std::cout << a[6 % 8 / 4 + 21 % 9];
応答として-5が返されますが、理由がわかりません。
配列は整数配列だからです。
最初に使用する必要があります
float a[10]
http://en.cppreference.com/w/cpp/language/operator_precedence 演算子が優先されるため、この場合:6%8/4 + 21%9 =(((6%8)/ 4)+(21% 9))=(6/4)+(3)= 4
a[0]=6,
a[1]=(int)7.8 = 7, (correct me if i'm wrong)
a[2] = (int)8.0 = 8,
a[3] = -6,
a[4] = (int)-5.7 = -5,
a[5] = 5,
a[6] = (int)5.7 = 5
したがって、インデックス4の要素は-5.7を整数にキャストすると、-5になります(残りは切り取られます)
6 % 8 / 4 => (6%8) / 4 => 6 / 4 => (int)1.5 => 1
(6/4はintです-numとdenomはintです)
21 % 9 => 3
1 + 3 == 4
a[4] == (int)(-5.7) == 5
a
はint
配列であるため、整数はintであり、floatではありません。
インデックス4は、C++演算子の優先順位のために選択されています