关于C++程序编译时出现的一个性能警告有关问题

关于C++程序编译时出现的一个性能警告问题
代码如下:

    unsigned long *primes=NULL;
unsigned long trial=0;
bool found=false;
        /*中间还有其他代码,求质数的一个程序*/
        for(size_t i=0;i<count;i++)
if(!(found=(trial%*(primes+i))))  //在这行VS2010给出警告
break;
if(found)
*(primes+count++)=trial;

第6行给出警告:warning C4800: “unsigned long”: 将值强制为布尔值“true”或“false”(性能警告)
网上查了一下如何解决这个警告,大部分人都说忽略就行,没有解释的很清楚的答案

但是作为一个程序员(新手),个人是比较偏执的那种(也就是强迫症关于C++程序编译时出现的一个性能警告有关问题),所以想弄明白这个警告能不能解决

既然编译器给出了警告,那总是有原因的,希望高手能解释一下这种【性能警告】到底是怎么回事,对程序有什么影响(程序能正常运行,但不代表程序就没有漏洞或缺陷)
------解决思路----------------------
http://msdn.microsoft.com/zh-cn/library/b6801kcy.aspx
改成trial%*(primes+i) == xx ? true : false,就没有警告了
------解决思路----------------------
原来是unsigned long 你给转换成bool 了  有精度丢失  
编译器针对这种精度丢失的会有warn  比较好的习惯是把全部的warn都处理掉  
你可以按照楼上的方法 用个三元表达式来避免精度的丢失
------解决思路----------------------
 我一看到if里面有=我就蛋疼
------解决思路----------------------
精度损失,肯定会有警告。用一楼的三元表达式准确些。