C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 不一致的警告“从’const unsigned char’转换为’const float’需要缩小转换”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Visual C 2017和 gcc 5.4生成从’const unsigned char’到’const float’的转换需要对B行进行缩小转换警告,但在此代码段中不需要对A行进行转换:
#include <iostream>

int main() {
    const unsigned char p = 13;
    const float         q = p;  // Line A

    std::cout << q << '\n';

    const unsigned char c[3] = {0,1,255};
    const float         f[3] = {C[2],c[0],c[1]};  // Line B

    for (auto x:f)
        std::cout << x << '\n';
}

这个警告有效吗?为什么B线的处理方式与A线不同?

解决方法

警告有效,aggregate initialization禁止C 11 narrowing conversions;但未在 copy initialization中应用(如前所述).

BTW:c [0],c [1]和c [2]是not constant expressions;你可以将数组声明为constexpr,即constexpr unsigned char c [3] = {0,255};.然后应用异常,Line B也可以正常工作.

大佬总结

以上是大佬教程为你收集整理的c – 不一致的警告“从’const unsigned char’转换为’const float’需要缩小转换”全部内容,希望文章能够帮你解决c – 不一致的警告“从’const unsigned char’转换为’const float’需要缩小转换”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。