%在c中是模除运算符,功能为取余。
n%2是对2取余,即可以被2整除,n%2值为0;否则值为1。
if是判断语句的标识,当括号内判断条件为真(非0值)则执行下面的语句,否则不执行。
于是if(n%2)就是判断n是否可以被2整除,如果不可以则执行。从数学上的概念来说,就是当n为奇数是执行,偶数时则不执行。
n/2代表
取余数
为零时
if语句为假
跳过语句
意思是不被2整除的数执行
if下的命令
这是一个备受批评的用法,正规的Coding
rules中的反例
n/2的结果一定是一个数值(如果n为整型,就是整除),而不是bool型;
C中没有定义bool型,因此到处乱用,很不好;但是C++中有扩展,而且基于C的一些扩展的开发工具会补充相对严格的定义的
所以一般使用:
if
(0
!=
n/2)
{}
如果考虑到运行效率,可以改进的:想象哪些数据整除2后会等于0阿?
C里面遵循“非0真”,即
只要一个表达式结果不是0,那么这个表达式就是true,是0
就是false。
这个语句,只要n/2值是0
那么判断为假false,否则判断真true