warning : pointless comparison of unsigned integer with zero

警告

  • Warning[Pe186]: pointless comparison of unsigned integer with zero
typedef enum {
	PRO_NULL = 0,
	PRO_TYPE_X,
	PRO_TYPE_Y,
	PRO_TYPE_Z,
	PRO_MAX_TYPE,
}PRO_TYPE;

void fun(char *pData)
{
	PRO_TYPE type = PRO_NULL;
	type = *pData;	
	if((type<0)||(type>PRO_MAX_TYPE))
	{
		return;		//这里总是会返回
	}
}

本意是希望判断type的类型是否在定义的枚举类型内,不在内则退出。但实际上述程序总是会退出。

原因

  • 解释:
    无符号整形和0的无意义比较
  • 影响:
    一个潜在的问题,判断无符号数大于等于0.由于无符号数没有负数,这种判断恒为真.

修改

将函数内type定义成int类型,从外部参数pData中解析后,与枚举类型的变量进行对比

typedef enum {
	PRO_NULL = 0,
	PRO_TYPE_X,
	PRO_TYPE_Y,
	PRO_TYPE_Z,
	PRO_MAX_TYPE,
}PRO_TYPE;

void fun(char *pData)
{
	int type = 0;
	type = *pData;	
	if((type<0)||(type>PRO_MAX_TYPE))
	{
		return;		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值