标题:这个警告如何消除?
作者:mugua001
日期:2020-11-10 23:13
内容:
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 };
#1 [fsu0413 11-11 07:05]
用signed char呢?
#2 [九重水 11-11 09:34]
就c++而言,根据c++它爸写的那本书里的内容说的,
char型的一般这样用:charc = 'a',
它的范围一般是-127~127(不是想象中-128~127,因为-128依赖于硬件的实现)。
所以,你填0~127进去,编译器不会叫起来。
如果你填一个负数进去,即使不超-127,它会叫起来,当然仅仅是个warning,
1)、你可以忽视它(前提是你要保证它正确);
2)、你也可以加个static_cast去强转过来;
3)、不用char,换个int,现在内存很大。
#3 回 九重水 的帖子 [mugua001 11-14 23:20]
九重水:就c++而言,根据c++它爸写的那本书里的内容说的,
char型的一般这样用:char c = 'a',
它的范围一般是-127~127(不是想象中-128~127,因为-128依赖于硬件的实现)。
所以,你填0~127进去,编译器不会叫起来。
如果你填一个负数进去,即使不超-127,它会叫起来 .. (2020-11-11 09:34)
谢谢,我将 CHAR 换成int了。警告消失。