年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1715|回复: 0

关于优先级的一个例子(信息量大)

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2014-2-26 22:51:15 | 显示全部楼层 |阅读模式
    看一个示例:
    1. #include <stdio.h>
    2. int main() {
    3.     for (int i = 0; i < 5; i++) {  //进行5次循环
    4.         if (!i%2) {  //对i进行取余计算(<span style="line-height: 1.5;">0、1、0、1、0</span><span style="line-height: 1.5;">),再取非,得到的数值应该是1、0、1、0、1</span>
    复制代码
    根据以上分析,得出的结果应该是1、3,可输出的结果却是:
    1. 1
    2. 2
    3. 3
    4. 4
    复制代码
    为什么?关键就在于if(!i%2),取非的优先级是很高的(参考C语言运算符优先级),所以结果是1%2、0%2、0%2、0%2、0%2,即结果为1、0、0、0、0,从而continue只被执行一次,第一次。所以会输出1、2、3、4这样的结果。
    这个例子对于初学者来讲有点绕,但信息量很大,建议多思考一下。


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-5-4 11:05 , Processed in 0.050911 second(s), 23 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表