加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 隐式投射被认为是一个坏概念吗?

发布时间:2020-12-16 10:35:22 所属栏目:百科 来源:网络整理
导读:为什么隐式铸造甚至被允许?我的意思是隐式地将浮点数转换为int的好处是什么?显式转换是否使代码更易读和更容易调试? 解决方法 第一:C中的大量隐式转换是由于 历史原因,没有别的.我认为没有人会考虑 他们都是个好主意.另一方面,有很多不同 隐式转换的类型
为什么隐式铸造甚至被允许?我的意思是隐式地将浮点数转换为int的好处是什么?显式转换是否使代码更易读和更容易调试?

解决方法

第一:C中的大量隐式转换是由于
历史原因,没有别的.我认为没有人会考虑
他们都是个好主意.另一方面,有很多不同
隐式转换的类型,其中一些几乎是必不可少的
语言:如果您需要显式转换,您不会喜欢它
传递MyType x;一个函数采用MyType const&amp ;;我很漂亮
确定有一个共识,const转换添加const,比如
这个,应该是隐含的.

关于没有达成共识的转换:

>几乎没有人似乎有无损转换的问题;
比如int to long,或者float to double.大多数人也
似乎接受从整数类型到浮点的转换(例如
int to double),虽然在某些情况下这些可能会松散.
(int i = 123456789; float f = i ;,例如.)
>在C 98标准化过程中有一项提议要求弃用
缩小转换次数,例如float to int. (作者)
提议是Stroustrup;如果你不喜欢这样的转换,那你就进去了
好公司.)没有通过;我不知道为什么,但我怀疑
这是一个从C的传统中挣脱太多的问题.
在C 11中,在某些较新的结构中禁止进行此类转换,
像新的初始化序列.所以听起来像是有的
一致认为这些隐含的转换并不是一个好主意,
但是因为害怕破坏代码或者只是因为它们而无法删除它们
打破了C的传统.(我知道不止一些人
不喜欢someString = 3.14159;是一份法律声明,
在字符串的末尾添加一个ETX字符.)
> bool的原始提议建议弃用所有
将数字和指针类型转换为bool.这被删除了;
很快就会明白,如果提出的话,该提案就不会通过
if(somePointer)之类的东西(相对于
if(somePointer!= NULL))非法.还有很大一部分
人们(包括我自己)认为这种转变“糟糕”,并避免
他们.

最后:编译器可以自由发出任何感觉的警告
喜欢.如果市场坚持要求进行此类转换,编译器
会实施它们(可能作为一种选择).我怀疑了
他们不这样做的原因是由于警告的声誉不好
初始实现产生太多警告.积分
促销会带来许多无人想要的缩小转化
消除:

char ch = '0' + v % 10;

例如,涉及int到char的转换(即
变窄);在C 11:

char ch{ '0' + v % 10 };

是非法的(但VC和g都接受它,g警告).一世怀疑可以使用,禁止缩小转换率至少会必须对更广泛类型本身所致的情况做出例外积分推广,混合型算术和来源的案例expression是一个编译时常量,它“适合”目标类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读