冰逸琉璃 发表于 2021-1-13 23:41:40

求助

#include <stdio.h>

int main()
{
      int i, sum = 0;

      for (i = 0; i < 1000; i++)
      {
                if (!(i % 3) || !(i % 5))
                {
                        sum += i;
                }
      }

      printf("%d\n", sum);

      return 0;
}
有没有人告诉我一下,这个表达式里的感叹号是什么意思。
!=这个是不等于,那单个!是什么意思

昨非 发表于 2021-1-13 23:47:22

本帖最后由 昨非 于 2021-1-13 23:56 编辑

bool值的取非操作
是true(1)则变为false(0)
是false(0)则变为true(1)
这里
if (!(i % 3) || !(i % 5))的条件等价于
if (!(i % 3!=0) || !(i % 5!=0))
翻译一下也就是:
如果:i%3=0 或 i%5=0 时:
当:i被三整除或被五整除时

2269099035 发表于 2021-1-13 23:50:16

这里的话,就是满足i不能被3整除或者i不能被5整除的时候,执行if的{}的代码

jackz007 发表于 2021-1-13 23:55:14

本帖最后由 jackz007 于 2021-1-13 23:59 编辑

       ! 是逻辑非,其效果是对表达式的原逻辑值取反。
      例如, 如果 i 能够被 3 整除,那么,i % 3 的值就是 0,逻辑值为 false, ! (i % 3) 的逻辑值与 i % 3 正好相反,为 true,就是说, ! (i % 3)的逻辑值在 i 能够被 3 整除的时候为 true,否则为 false。
页: [1]
查看完整版本: 求助