我想知道当 if(i%2) 它检查什么以继续时会发生什么。它错过了 == 但它打印出总和为 20?为什么?
I wonder whats happens when if(i%2) what does it checks to come to continue. It misses == but it prints out the sum as 20? Why?
#import <stdio.h>
int main(void) {
int sum,i;
sum = 0;
for(i=0;i<10;i++) {
if(i%2)
continue;
sum+=i;
}
printf("\n%d",sum);
return 0;
}
if(i%2)
在上面的代码中是如何工作的?
这里使用的%
称为modulo operator。它检查除法的余数。
关于 if
声明,C11
标准说,来自第 §6.8.4.1
章
Syntax : if
( expression ) statement
和
... the first sub-statement is executed if the expression compares unequal to 0.
所以,对于像 if(i%2)
这样的语句,结果
- 为TRUE,当
i
值不是2的倍数,即产生非零余数,所以遇到continue;
。
- 为 FALSE,当
i
可以被 2 整除时。因此,continue;
被跳过并且
sum+=i;
被执行。
也就是说,C
里面没有#import <stdio.h>
,应该是#include <stdio.h>
最后,
How does if(i%2) works in the above code?
用于将所有偶数相加,直到9。结果20
打印出来。
In computing, the modulo operation finds the remainder after division of one number by another (sometimes called modulus).% is the modulus operator.
所以i%2returnsi除以2剩下的余数
因此如果我是奇数 i%2=1(TRUE)
否则为 0(FALSE).(偶数条件)
因此,如果 i 是偶数,则将 i 添加到 sum else 循环继续。
if语句中的条件
if ( i % 2 )
相当于
if ( i % 2 != 0 )
如果 i 是奇数,则此条件为真。
所以程序求 [0, 10 )
范围内的偶数之和
根据 C 标准(6.8.4.1 if 语句)
2 In both forms, the first substatement is executed if the
expression compares unequal to 0.
这里"the first substatement"表示if语句(如果有else则为第二个子语句)
最好重写没有break语句的循环。例如
for ( i = 0; i < 10; i++ )
{
if ( i % 2 == 0 ) sum += i;
}
与
相同
for ( i = 0; i < 10; i += 2 )
{
sum += i;
}
如果条件只知道 TRUE
或 FALSE
。
如果您的 modulo
操作产生 true
条件,那么它将执行 continue
。否则它会求和。
**真实条件 = 任何不带零的数字 (0)
#import <stdio.h>
int main(void) {
int sum,i;
sum = 0;
for(i=0;i<10;i++) {
if(i%2)
continue;
sum+=i;
}
printf("\n%d",sum);
return 0;
}
if(i%2)
在上面的代码中是如何工作的?
这里使用的%
称为modulo operator。它检查除法的余数。
关于 if
声明,C11
标准说,来自第 §6.8.4.1
Syntax :
if
( expression ) statement
和
... the first sub-statement is executed if the expression compares unequal to 0.
所以,对于像 if(i%2)
这样的语句,结果
- 为TRUE,当
i
值不是2的倍数,即产生非零余数,所以遇到continue;
。 - 为 FALSE,当
i
可以被 2 整除时。因此,continue;
被跳过并且sum+=i;
被执行。
也就是说,C
里面没有#import <stdio.h>
,应该是#include <stdio.h>
最后,
How does if(i%2) works in the above code?
用于将所有偶数相加,直到9。结果20
打印出来。
In computing, the modulo operation finds the remainder after division of one number by another (sometimes called modulus).% is the modulus operator.
所以i%2returnsi除以2剩下的余数
因此如果我是奇数 i%2=1(TRUE)
否则为 0(FALSE).(偶数条件)
因此,如果 i 是偶数,则将 i 添加到 sum else 循环继续。
if语句中的条件
if ( i % 2 )
相当于
if ( i % 2 != 0 )
如果 i 是奇数,则此条件为真。
所以程序求 [0, 10 )
根据 C 标准(6.8.4.1 if 语句)
2 In both forms, the first substatement is executed if the expression compares unequal to 0.
这里"the first substatement"表示if语句(如果有else则为第二个子语句)
最好重写没有break语句的循环。例如
for ( i = 0; i < 10; i++ )
{
if ( i % 2 == 0 ) sum += i;
}
与
相同for ( i = 0; i < 10; i += 2 )
{
sum += i;
}
如果条件只知道 TRUE
或 FALSE
。
如果您的 modulo
操作产生 true
条件,那么它将执行 continue
。否则它会求和。
**真实条件 = 任何不带零的数字 (0)