GCC cảnh báo tôi rằng đoạn mã sau đây có chứa một chuyển đổi ngầm có thể thay đổi một giá trị:Tại sao GCC cảnh báo chống lại sự chuyển đổi tiềm ẩn này?
#include <stdlib.h>
float square = rand();
Tuy nhiên, sau đây không mang lại bất kỳ cảnh báo:
float square = 100;
Cảnh báo được đưa ra bởi GCC là như sau:
tests/ChemTests.cpp:17:23: error: conversion to ‘float’ from ‘int’ may alter its value
Tôi không hiểu tại sao trước đây sẽ đưa ra cảnh báo, vì rand()
là p roperly tuyên bố và trả về một số int
, giống như số nguyên là 100
.
Tại sao dòng đầu tiên đưa ra cảnh báo trình biên dịch chứ không phải là cảnh báo thứ hai, mặc dù cả hai đều có chuyển đổi ẩn từ int
sang float
?
Tôi thấy rằng tôi không nhận được cảnh báo trừ khi tôi sử dụng tùy chọn '-Wconversion'. –