• 3855阅读
  • 3回复

这个警告如何消除? [复制链接]

上一主题 下一主题
离线mugua001
 

只看楼主 倒序阅读 楼主  发表于: 2020-11-10

warning: narrowing conversion of '-14' from 'int' to 'const char' inside { } [-Wnarrowing]
                 -26, 66, 104, 65, -103, 45, 15, -80, 84, -69, 22 };
                                                                                           ^
        
---------
const char sm_S[256] ={ 99, 124, 119, 123, -14, 107, 111, -59, 48, 1, 103, 43, -2, -41, -85, 118, -54,                -126, -55, 125, -6, 89, 71, -16, -83, -44, -94, -81, -100, -92, 114,               -26, 66, 104, 65, -103, 45, 15, -80, 84, -69, 22 };
离线fsu0413

只看该作者 1楼 发表于: 2020-11-11
用signed char呢?
离线九重水

只看该作者 2楼 发表于: 2020-11-11
就c++而言,根据c++它爸写的那本书里的内容说的,
char型的一般这样用:char  c = 'a',
它的范围一般是-127~127(不是想象中-128~127,因为-128依赖于硬件的实现)。
所以,你填0~127进去,编译器不会叫起来。
如果你填一个负数进去,即使不超-127,它会叫起来,当然仅仅是个warning,
1)、你可以忽视它(前提是你要保证它正确);
2)、你也可以加个static_cast<char>去强转过来;
3)、不用char,换个int,现在内存很大。


离线mugua001

只看该作者 3楼 发表于: 2020-11-14
回 九重水 的帖子
九重水:就c++而言,根据c++它爸写的那本书里的内容说的,
char型的一般这样用:char  c = 'a',
它的范围一般是-127~127(不是想象中-128~127,因为-128依赖于硬件的实现)。
所以,你填0~127进去,编译器不会叫起来。
如果你填一个负数进去,即使不超-127,它会叫起来 .. (2020-11-11 09:34) 

谢谢,我将 CHAR 换成int了。警告消失。
快速回复
限100 字节
 
上一个 下一个