wuligreen 2021-02-17 23:52 采纳率: 0%
浏览 98

C语言中 while (i % 8|| printf("%d\n", i),i--);

如题, 知道逗号表达式的用法,求问while (i % 8|| printf("%d\n", i),i--); 为何能够输出100以内8的倍数(包括0)

  • 写回答

2条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2021-02-18 01:51
    关注

     

    在条件语句中,C 语言会做优化, 不会判断所有的结果。 if (A || B), 只要 A 是TRUE, 那么 B 就不执行了。 在你的例子中, 如果 (i % 8) 的结果不为 0 ,那就是 TRUE,  在 ||  的条件组合中, C 语言就不执行下一个表达式,所以 printf() 部分就跳过去了。 只有 (i % 8) 的结果为 0 的时候, C 语言才会看 || 条件组合的下一个。 

    评论

报告相同问题?

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?