对不起这个简单的问题,但我无法解决......
有一个例子:
int a[10] = {6, 7.8, 8.0, -6, -5.7, 5, 5.7};
std::cout << a[6 % 8 / 4 + 21 % 9];
作为回应,我得到 -5 ,但我不明白为什么。
答案 0 :(得分:7)
因为你的数组是一个整数数组。
你应该先使用
float a[10]
答案 1 :(得分:3)
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(其余的只是截断)
答案 2 :(得分:2)
6 % 8 / 4 => (6%8) / 4 => 6 / 4 => (int)1.5 => 1
(6/4是int - num和denom是整数)
21 % 9 => 3
1 + 3 == 4
a[4] == (int)(-5.7) == 5
a
是一个int
数组,所以数字是int而不是浮点数。
由于C++ operator precedence