GCC предупреждает меня, что следующий фрагмент кода содержит неявное преобразование, которое может изменить значение:
#include <stdlib.h>
float square = rand();
Однако следующее не дает никаких предупреждений:
float square = 100;
предупреждение, выданное GCC, выглядит следующим образом:
tests/ChemTests.cpp:17:23: error: conversion to ‘float’ from ‘int’ may alter its value
Я не понимаю, почему первый выдает предупреждение, поскольку rand ()
правильно объявлен и возвращает int
, как и целочисленный литерал 100
.
Почему первая строка выдает предупреждение компилятора, а вторая - нет, даже если обе имеют неявное преобразование из int
в float
?