long plifs[] = {25,92,3.0};是不允许的。为什么这样可以?

Hui Liu-MSFT 40,786 信誉分 Microsoft 供应商
2024-04-11T06:54:09.6066667+00:00

在我的书:C++ primer plus 中, 它说long plifs[] = {25,92,3.0};是不允许的。

但我可以使用它。

Note:此问题总结整理于:Why this is ok?

C++
C++
一种通用的高级编程语言,作为 C 编程语言的扩展而创建,除了用于低级别内存操作的功能外,还具有面向对象、泛型和功能性等特点。
68 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Jiale Xue - MSFT 34,276 信誉分 Microsoft 供应商
    2024-04-11T09:20:07.3466667+00:00

    你好

    就我而言,您不能忽略编译器生成的警告。在这里,编译器将生成编译器警告(级别 1)C4838

    通常,对于违反语言规则的行为,C++ 标准要求编译器发出诊断程序。它做到了。该标准规定,如果程序格式不正确,则需要进行诊断。当窄转换发生在支撑初始值设定项内部时,就是这种情况。

    根据文档:隐式类型转换

    如果所选转换是升级,则编译器不会发出警告。如果转换范围缩小,编译器会发出有关可能的数据丢失的警告。是否发生实际数据丢失取决于所涉及的实际值,但我们建议您将此警告视为错误。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助