Почему GCC предупреждает об этом неявном преобразовании?

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 ?

9
задан lindelof 12 October 2011 в 04:47
поделиться