zoukankan      html  css  js  c++  java
  • 为啥C中的位逻辑运算符优先级低于等于和不等于

    http://www.cnblogs.com/aoaoblogs/archive/2012/05/02/2478758.html 

    早期的c木有从操作符上区分逻辑运算&&/||和位逻辑运算&/|,(晓得了不?)。&和|使用"真值上下文"(继承自B和BCPL)思想解释其意义:如果是在"if"、“while”什么的后面,因为要求这里必须是一个布尔表达式,因此&和|都是被当成现在的&&和||在解释;普通表达式里面&和|才被解释成位逻辑运算。这办法还不错,除了有点理解障碍。(There was the notion of "top-level operators" in a truth-value context. 

    当时&和|的优先级和现在的&和|是一样的。
    在Alan Snyder的强烈要求下,&&和||被添加到c里面,由此分离了位逻辑运算符和逻辑运算符。但是吧,关于这个优先级问题我总有一种寒从脚底生的赶脚,比如我们会看到很多酱的代码:
    if (a==b & c==d) ...(抖...)
    现在看哈可能把&的优先级提高到高于==更好,但是当时的话可能还是只是对&和&&做个区分,别去修改既有&操作符的优先级更稳妥一些。(毕竟,俺们有成千上万的源码哇。。maybe 3 installations。。。
  • 相关阅读:
    makefile ifeq ($(LANG),) 判断操作系统
    MIPS 指令集速查
    ps ef|grep mh* 命令
    ulimit c unlimited 命令
    kill 9 2402 命令
    chmod R 777 命令
    计算机网络总结
    source 命令
    ./ 命令
    reboot f 命令
  • 原文地址:https://www.cnblogs.com/mumuliang/p/2511465.html
Copyright © 2011-2022 走看看