c语言中各种值类型可以隐式互相转换
if里本来需要一个bool类型
但是当你把一个int型放到if里做判断时,就会隐式的转换为bool型
int型非0为真,0为假
那么当isprime==1时返回真,==0时返回假
如果isprime只有1和0两种状态,没有2,3,4之类的值,那么其实你要判断isprime==1就是在判断isprime不为0,就可以直接写if(isprime)而不必在后面具体写数值
而如果isprime有多种值,就不能这样写,否则所有非0值都会返回真,逻辑就会出错
if(isprime)和if(isprime == 1)在这里是一个意思
因为isprime的取值只有1和0
if()。在括号里面,取真,也就是1的时候,就执行if语句里面的语句,取假,即取0的时候,就不执行if语句里面的语句。所以 题主说的二者是同一个道理。