使用codewarrior编程时出现如上警告,请问是怎么回事呢?
10 个解决方案
#1
同一变量的声明和定义两处语句没有统一,把unsigned去掉看行不? 如果不行,贴代码看下~~
#2
编译器提醒你把int赋给一个无符号short会有数据精度损失。
#3
无法把int 型的变量转换为unsigned int型,应该是=左边和右边的类型不一致
#4
强制转换吧。
#5
强制转换,或者变量类型统一。
难道是for循环用的int i?
难道是for循环用的int i?
#6
int i=999999999999;
unsigned short u = i;
这样就会报这个警告,如果i的值不大,10、20的,这样用也没事,要是i值很大,如上,u的值就是%过最大的unsigned short值的结果.但是你确实是想这样用,你知道这么用的风险,就告诉编译器
unsigned short u = (unsigned short)i;
unsigned short u = i;
这样就会报这个警告,如果i的值不大,10、20的,这样用也没事,要是i值很大,如上,u的值就是%过最大的unsigned short值的结果.但是你确实是想这样用,你知道这么用的风险,就告诉编译器
unsigned short u = (unsigned short)i;
#7
int 到short 可能出现精度丢失。原则上不允许使用小的short类型去接口的int类型的值。
#8
int i=65536+2;
unsigned short us;
us = i;
us = (unsigned short)(i&0xFFFFu); //2
#9
有int类型转换成unsigned short类型,数据范围缩小了,那么你的数据可能也被截断了,所以编译器提出警告让你注意这个地方。如果反过来就不会有警告了,类型有一个隐式提升的过程。建议这种情况,如果是必须的那就做强制类型转换。
#10
你应该是把一个int赋值给一个unsigned short了。。加上强制类型转换就不会有警告了。。
#1
同一变量的声明和定义两处语句没有统一,把unsigned去掉看行不? 如果不行,贴代码看下~~
#2
编译器提醒你把int赋给一个无符号short会有数据精度损失。
#3
无法把int 型的变量转换为unsigned int型,应该是=左边和右边的类型不一致
#4
强制转换吧。
#5
强制转换,或者变量类型统一。
难道是for循环用的int i?
难道是for循环用的int i?
#6
int i=999999999999;
unsigned short u = i;
这样就会报这个警告,如果i的值不大,10、20的,这样用也没事,要是i值很大,如上,u的值就是%过最大的unsigned short值的结果.但是你确实是想这样用,你知道这么用的风险,就告诉编译器
unsigned short u = (unsigned short)i;
unsigned short u = i;
这样就会报这个警告,如果i的值不大,10、20的,这样用也没事,要是i值很大,如上,u的值就是%过最大的unsigned short值的结果.但是你确实是想这样用,你知道这么用的风险,就告诉编译器
unsigned short u = (unsigned short)i;
#7
int 到short 可能出现精度丢失。原则上不允许使用小的short类型去接口的int类型的值。
#8
int i=65536+2;
unsigned short us;
us = i;
us = (unsigned short)(i&0xFFFFu); //2
#9
有int类型转换成unsigned short类型,数据范围缩小了,那么你的数据可能也被截断了,所以编译器提出警告让你注意这个地方。如果反过来就不会有警告了,类型有一个隐式提升的过程。建议这种情况,如果是必须的那就做强制类型转换。
#10
你应该是把一个int赋值给一个unsigned short了。。加上强制类型转换就不会有警告了。。