C++对and、or等运算符的支持

原创 2014年12月01日 10:50:04
// test.c
// gcc test.c  --- compile error
#include <stdio.h>
int main()
{
  int a = (0) or (0);
  printf("%d", a);
  return a;
}

上面这段c代码能编译通过吗?答案是不能。gcc test.c


增加一个头文件,换成这样呢:

// test.c
// gcc test.c  --- compile success
#include <stdio.h>
#include <iso646.h>
int main()
{
  int a = (0) or (0);
  printf("%d", a);
  return a;
}


答案是能!

对于C++,不增加头文件,依然能编译过下面的test.cpp文件。

// test.cpp
// g++ test.cpp     ---- compile success<pre name="code" class="cpp">#include <stdio.h>
#include <stdio.h>
int main()
{
  int a = (0) or (0);
  printf("%d", a);
  return a;
}


Oh shit, g++什么时候自动支持这么”牛逼“的运算符了,这不是php和python的专利吗?不光是and or,ISO646标准一口气支持了一堆运算符:

定义为
and &&
and_eq &=
bitand &
bitor |
compl ~
not !
not_eq !=
or ||
or_eq |=
xor ^
xor_eq ^=

为什么这么做:http://zh.wikipedia.org/wiki/Iso646.h

做到了什么程度:http://zh.wikipedia.org/wiki/ISO/IEC_646

之所以发本文,是发现OceanBase代码中我写了一个or,被千拂同学review的时候发现。不过,居然没有被编译器发现。最近php写多了是么?


版权声明:本文为博主原创文章,未经博主允许不得转载。微信hustos联系博主。

C++中运算符 &和&&、|和|| 的区别

简介:&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型 &与| 既可以进行逻辑运算,又可以进行位运算,两边既可以是bool类型,又可以是数值类型区别:if (A && ...
  • violet_echo_0908
  • violet_echo_0908
  • 2015年08月10日 11:08
  • 28331

not good for c++

  • 2011年11月18日 07:04
  • 4.59MB
  • 下载

C%2B%2B C++批判(第三版).pdf

  • 2010年03月17日 13:43
  • 352KB
  • 下载

c--

http://download.csdn.net/tag/Programming.Principles%2Band%2BPractice%2BUsing%2BC%2B%2B
  • macrohasdefined
  • macrohasdefined
  • 2013年05月22日 17:32
  • 320

C++ - Identifier not found

 This is because forward declaration in C++: Compiler needs to know function prototype when funct...
  • chimomo
  • chimomo
  • 2014年05月14日 10:05
  • 8644

C++11新特性之and, and_eq, or, or_eq, xor, xor_eq, not, not_eq操作符

在C++11标准中,新增了一些关键字,这些关键字也是操作符:and, and_eq, or, or_eq, xor, xor_eq, not, not_eq, bitand, bitorand表示逻辑...
  • oyoung_2012
  • oyoung_2012
  • 2017年12月05日 11:56
  • 65

《C++0x漫谈》系列

05年开始关注C++0x,其时C++0x的大部分草案其实都已经初具雏形。但几个重大的特性:concepts, rvalue, memory-model, variadic-templates等都还在激...
  • pongba
  • pongba
  • 2007年04月11日 20:33
  • 13313

C++ 学习基础篇(一)—— C++与C 的区别

程序的学习学无止境,只掌握一门语言是远远不够的,现在我们开始C++的学习之路,下面先看下C++ 与C 的区别 一、C++概述 1、发展历史       1980年,Bjarne Stroustrup博...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月24日 20:36
  • 15308

c++位运算符 | & ^ ~ && ||,补码,反码

一:简介 1 位逻辑运算符:       & (位   “与”)  and       ^  (位   “异或”)       |   (位    “或”)   or       ~  (位...
  • wuguai4
  • wuguai4
  • 2012年03月02日 14:49
  • 21625
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++对and、or等运算符的支持
举报原因:
原因补充:

(最多只允许输入30个字)