运算符

任何表达式是有值的

  1. int a = 2;
  2. int b = 3;
  3. a*=b+4;//a=a*(b+4);"*"*=的优先级层次和=号的层次一样。
  4. printf("%d\n",a);//14

%求与运算符号,等同于被求余数的数。而且运算符必须是整数。有时也能用于求整除的数(i%5==0)。

++自增运算:

++自己独立构成表达式的时候,前后++没有区别,如果++构成的表达式参与了其他表达式的构成运算,前++相当于加一运算,后++先使用后加一,完结后加1

  1. int a = 5;
  2. int b = 6;
  3. printf("%d\n",a+++b);//12,编译原理编译到a后看能否构成表达式,a++构成表达式

关系表达式的运算结果只有1和0,常用语判断。

  1. int x = 5;
  2. int y = 6;
  3. if(x == y ) {
  4. printf("x == y\n");
  5. }else{
  6. printf("x != y\n");
  7. }
  8. //x != y;
  9. if(x=y) {//y的值赋给x,if的条件除了0其余为真,内部是以非0判断为真的。
  10. printf("x==y\n");
  11. }else{
  12. printf("x!=y\n");
  13. }
  14. //x==y;
  1. [5,100)的表示:
  2. 5<= x <100错误的原因:
  3. 优先级相同,则从左至右算,5 <= x,先运算,运算之后将5 <= x的值(0或者1)再和100进行运算。
  4. 5 <= x && x < 100;

&&:将两侧的操作数逻辑化,0为假,非0为真。```c

int a = 3;

int b = 5;

if(a && 5 ) {//3为真,5为真

printf("xxxx\n");

}

if((a-a) && (b-a) ) {//a-a=0w为假

printf("xxxx\n");

}else{

printf("oooo\n");

}

  1. !的优先级高于&&,||
  2. ```c
  3. int a = 3;
  4. int b = 5;
  5. !a < b;//0 < 5 ==== !0
  6. !(a < b);//==== 0

短路现象:

  1. int a = 44;
  2. int b = 55;
  3. if( (a > 40 ) || (b = 66) ) {
  4. printf("xxxxx%d\n",d);
  5. } else{
  6. printf("ooooo%d\n",d);
  7. }
  8. //a>40为真,(||只要有一个为真全真)发生短路d=55(d=66的赋值运算没有执行)
  9. if( (a < 40) || (b =66 ) ) {
  10. printf("xxxxxd%\n",d);
  11. }else{
  12. printf("ooooo%d\n",d);
  13. }
  14. //xxxxx66,第一个不成立,继续判断第二个,b=66,为真。
  1. int a = 44;
  2. int b = 55;
  3. if( (a < 40 ) && (b = 66) ) {
  4. printf("xxxxx%d\n",d);
  5. } else{
  6. printf("ooooo%d\n",d);
  7. }
  8. //a<40为假,(&&只有两个为真全真)发生短路d=55(d=66的赋值运算没有执行)
  9. if( (a > 40) && (b =66 ) ) {
  10. printf("xxxxxd%\n",d);
  11. }else{
  12. printf("ooooo%d\n",d);
  13. }
  14. //xxxxx66,第一个不成立,(&&只有两个为真全真)不会判断第二个直接为假。

短路提高了效率。

三元运算

  1. a>b? c:(d>55?10:20);//从右至左
  2. int t;
  3. if(d>55)
  4. t = 10;
  5. else
  6. t = 20;
  7. if(a>b)
  8. printf("%d",c);
  9. else
  10. printf("%d",t);

逗号表达式:

  1. int xx;
  2. xx = 1+1,2+1,3+2,5*5,5*7;//顺序求值遇到","相当于一个表达式,做赋值运算
  3. printf("xx%d\n",xx);//2
  4. xx = (1+1,2+1,3+2,5*5,5*7);//顺序求值,括弧优先级高,一次根据","最右边赋值。
  5. printf("xx%d\n",xx);//35
  6. printf("xx%d\n",1+1,2+1,3+2,5*5,5*7);//根据第一个,但是有问题
  7. printf("aa%d xx%d\n",aa 1+1,2+1,3+2,5*5,5*7);//这样是有问题
  8. printf("xx%d\n",(1+1,2+1,3+2,5*5,5*7 ) );

sizeof:类型大小运算

sizeof是一个关键字而不是一个函数,走关键字的路,让别人去说函数吧。

  1. char c = 1;
  2. int i = 10;
  3. printf("sizeof(c+i)%d\n",sizeof(c+i));//4显示int的类型
  4. printf("sizeof c+i %d\n",sizeof c+i );//11,sizeof没有括弧的时候它的运算符的游戏那几高于+,先算出c的类型长度位1,在参与运算

总结:() !,sizeof 算数 > 关系 > 逻辑(除!)?,:,= ,

C/C++(基础-运算符详解)的更多相关文章

  1. Net is as typeof 运行运算符详解 net 自定义泛型那点事

    Net is as typeof 运行运算符详解   概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...

  2. I2C 基础原理详解

    今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...

  3. python 3.x 爬虫基础---Urllib详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...

  4. RabbitMQ基础知识详解

    什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中 ...

  5. Nmap扫描教程之基础扫描详解

    Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...

  6. jmeter 基础功能详解

    jmeter 基础功能详解 thread group:包含一组线程,每个线程独立地执行测试计划. sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求, ...

  7. hadoop基础-SequenceFile详解

    hadoop基础-SequenceFile详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SequenceFile简介 1>.什么是SequenceFile 序列文件 ...

  8. Cisco路由技术基础知识详解

    第一部分 请写出568A的线序(接触网络第一天就应该会的,只要你掐过,想都能想出来) .网卡MAC地址长度是(  )个二进制位(16进制与2进制的换算关系,只是换种方式问,不用你拿笔去算) A.12  ...

  9. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

随机推荐

  1. redhat赋予普通用户root权限

    方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉 ## Allows people in group wheel to run all commands%wheel  ...

  2. CodeForcesEducationalRound40-D Fight Against Traffic 最短路

    题目链接:http://codeforces.com/contest/954/problem/D 题意 给出n个顶点,m条边,一个起点编号s,一个终点编号t 现准备在这n个顶点中多加一条边,使得st之 ...

  3. Python组织文件 实践:查找大文件、 用Mb、kb显示文件尺寸 、计算程序运行时间

    这个小程序很简单原本没有记录下来的必要,但在编写过程中又让我学到了一些新的知识,并且遇到了一些不能解决的问题,然后,然后就很有必要记录一下. 这个程序的关键是获取文件大小,本来用 os.path.ge ...

  4. web——前后端通信原理

    前端向后台传输数据: 传输方法:post  get 区别: (1)get:用于从服务器获取数据,将参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看 ...

  5. GenIcam标准介绍

    GenICam TM的目标是为各种相机和设备提供通用编程接口.无论他们使用什么接口技术(GigE Vision,USB3 Vision,CoaXPress,Camera Link HS,Camera ...

  6. 05002_Linux的安装

    1.虚拟机VMware workstation的安装 (1)下载链接:VMware workstation下载 密码:52wt: (2)双击VMware-workstation-full-10.0.2 ...

  7. new期间的异常

    new包含两步,调用operator new申请空间,以及调用构造函数. 如果第一步结束之后,第二步发生异常,需要归还第一步的空间. 编译器帮我们做了这件事情,并且会调用对应的delete. 另外 n ...

  8. 我持续推动Rust语言支持Windows XP系统

    前言 Rust好像长期以来不支持Windows XP系统.有不少用户发帖提议官方支持XP,基本上都被Rust官方开发人员明白的拒绝了.他们的对话大致上是以这种形式開始和结束的(当中乙方代表官方及其拥趸 ...

  9. xml里面product的值在哪里设置的?

    转载请注明出处:http://blog.csdn.net/droyon/article/details/39890469 在进行Android应用程序开发时,善于运用xml中的product配置,能够 ...

  10. Class C++

    为了尽量降低全局变量的使用并提供用户自己定义类型的功能.C++语言提供了一种新的语言机制---类(class).并以类作为构造程序的基本单位 #include<iostream> usin ...