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
的隐式转换?