gpt4 book ai didi

c++ - 为什么编译器允许缩小转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:38 26 4
gpt4 key购买 nike

谁能给我解释一下,如果初始化器可能导致信息丢失,为什么编译器允许初始化内置类型的变量?

例如 C++ Primer,第 5 版说,如果初始化器可能导致信息丢失,编译器不会让我们列出内置类型的初始化变量。

但是我的编译器 gcc v 4.7.1 在以下代码中成功初始化了变量 a:

long double ld = 3.1415926536; 
int a{ld};

只是警告:在 { } [-Wnarrowing] 中缩小从“long double”到“int”的“ld”转换。

最佳答案

初始化列表的一个特点是不允许缩小转换。但是语言定义不区分警告和错误;当代码格式错误时,它需要“诊断”,它被定义为一组实现定义的消息中的任何消息。警告满足此要求。这是非标准扩展的机制:发出警告后,编译器可以自由地做任何它想做的事情,包括根据特定于实现的规则编译一些东西。

关于c++ - 为什么编译器允许缩小转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12873919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com