c++ - 为什么在将浮点数转换为字符时,C++ 不显示缩小转换错误?
问题描述
使用编译此代码g++ -std=c++17 -Wall -pedantic main.cpp
不会产生任何警告:
#include <iostream>
#include <stdlib.h>
int main(int argc, char const *argv[]) {
for (int i = 0; i < 100; ++i) {
float x = 300.0 + rand();
char c = x;
std::cout << c << std::endl;
}
return 0;
}
它不应该产生缩小误差吗?
解决方案
我做了一些研究,发现-Wall
并没有警告类型转换问题。
相反,请使用该标志-Wconversion
来获取有关潜在类型转换问题的警告。
评论:
对于 VC++ 的用户,/W4
将警告您在类型转换期间可能会丢失数据
推荐阅读
- java - 从 Jersey 过滤器或拦截器内部访问资源方法参数。或者将 AOP 与资源方法一起使用
- c# - 如何在 Visual Studio 的属性窗口中使类型可编辑?
- angular - 为什么更改路线时不保存服务数据?
- java - XStream 序列化错误?
- jenkins - 在 Windows Jenkins slave 中使用 string.execute() 在 master 上运行
- java - Java 桌面应用程序中的 Azure 多因素身份验证
- ionic-framework - IONIC-V3:在继续执行代码之前等待页面弹出
- python - 如何自动填充 One2many
- python - Flask 应用程序在 Heroku 上失败:没有名为 app 的模块
- design-patterns - 责任链设计模式如何用于处理 Windows 中的鼠标单击和键盘事件?