Visual C ++ 2017 и gcc 5.4 выдают conversion from 'const unsigned char' to 'const float' requires a narrowing conversion
предупреждение для Line B
, но не для Line A
в этом фрагменте кода:
#include <iostream>
int main() {
const unsigned char p = 13;
const float q = p; // Line A
std::cout << q << '\n';
const unsigned char c[3] = {0, 1, 255};
const float f[3] = {c[2], c[0], c[1]}; // Line B
for (auto x:f)
std::cout << x << '\n';
}
Это предупреждение действительно? Почему Line B
трактуется иначе, чем Line A
?