zoukankan      html  css  js  c++  java
  • 第15课 逻辑运算符分析

    有趣的问题:

    示例如下:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int i = 0;
     6     int j = 0;
     7     int k = 0;
     8     
     9     ++i || ++j && ++k;
    10 
    11     printf("%d
    ", i);
    12     printf("%d
    ", j);
    13     printf("%d
    ", k);
    14     
    15     return 0;
    16 }

    运行结果如下:

    逻辑与的优先级较高并不等于先计算逻辑与,如上图中的等价代换。在逻辑与和逻辑或混合运算时,整个表达式被看成逻辑或表达式。

    上图中编译器从左向右依次计算每个括号中逻辑与的表达式的值,这才是真正的在逻辑运算符表达式中逻辑与比逻辑或具有更高优先级的体现。

    短路规则示例:

     1 #include <stdio.h>
     2 
     3 int g = 0;
     4 
     5 int f()
     6 {
     7     printf("In f()...
    ");
     8 
     9     return g++;
    10 }
    11 
    12 int main()
    13 {
    14     if( g || f() && f() )
    15     {
    16         printf("In if statement: %d
    ", g);
    17     }
    18     
    19     printf("In main(): %d
    ", g);
    20     
    21     return 0;
    22 }

    等价代换后的程序:

    运行结果如下:

    逻辑非运算符:

    示例如下:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     printf("%d
    ", !0);
     6     printf("%d
    ", !1);
     7     printf("%d
    ", !100);
     8     printf("%d
    ", !-1000);
     9     
    10     return 0;
    11 }

    运行结果如下:

    小结:

  • 相关阅读:
    30分钟掌握ES6/ES2015的核心内容(上)
    rem 响应式用法
    angular框架MVVM
    vue3 + vite + elmentui
    vue3 + vite + elmentui
    vue3 + vite 开发新项目
    滚动条滚动加一个进度条
    jquery 截取页面 url ,切换新的url 跳转
    h5,css3
    前端模板预编译技术
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9535707.html
Copyright © 2011-2022 走看看