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
to float
?
当转换可能导致精度损失时,GCC 会发出此警告。 (换句话说,该值可能会被“改变”)
在第一种情况下,rand()
返回一个int
。由于并非所有值都可以存储在int
可以表示为float
,它会发出此警告。
在第二种情况下,100 可以安全地转换为float
没有任何精度损失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)