黑马程序员-C学习笔记-运算符

------- ios培训、 android培训、java培训、期待与您交流! ----------

 一.算术运算符

   +        加

-         减

*         乘

/         除

%       取模

注意点: 取模运算不可以出现小数

取模运算的正负性取决于前面数字的正负

二.关系运算符

>        大于

<        小于

>=     大于等于

<=    小于等于

==     等于

!=      不等于

注意点:(1)关系运算符的结合性是从左往右的,上面4个运算符的优先级大于下面2个

(2)赋值运算符〈比较运算符〈算术运算符

(3)关系运算符的结果只有0和1

三.逻辑运算符 :结果只有2个 真或者假

&&  逻辑与 (只要有一个表达式为假,整个表达式的结果就为假) 一假则假

如果前面的表达式为假,那么后面的表达式就不参与运算了。

结合方向:从左往右

|| 逻辑或  (只要有一个表达式为真,整个表达式的结果为真)  一真则真

如果前面的表达式为真,那么后面的表达式就不参与运算了

结合方向:从左往右

!逻辑非    真变假 假变真

结合方向 :从右往左

注意点: (1)  !的优先级要高于比较运算符和算术运算符

(2)  &&  || 的优先级小于关系运算符  大于赋值运算符

(3)  &&的优先级高于||

四.赋值运算符

=     +=    -=    *=   /=   %=

int a =2;

a-=8;//等价于 a=a-8

注意点:(1)所有赋值运算符的优先级都是小于算术运算符的

(2)所有赋值运算符的优先级都相等,结合方向:从右到左

(3) 赋值运算符是所有运算符中,除了逗号运算符以外,优先级最低的

五.sizeof运算符

用来计算常量、变量、以及数据类型(某种数据类型的常量或变量)所占用的存储空间

注意点:(1)类型本身不占用存储空间,只是这种数据类型的数据才占用存储空间

(2)当sizeof作用在数据类型上,小括号不可以省略

六.自增自减

a++  a--

++a  --a

规律:本身自增自减1,返回值:前加后不加,前减后不减

代码演示:

 1 #include <stdio.h>
 2
 3  int main(int argc  const char *argv[]){
 4
 5    int a =10;
 6
 7    int b =++a;
 8
 9    printf("b=%d\n",b);// b=11
10
11    int c =a++;
12
13    printf("c=%d",c); //  c=11
14
15    printf("a=%d\n",a);// a=12
16
17  return 0;
18
19 }

七.特殊运算符

1.逗号运算符

表达式1,表达式2,表达式3,……,表达式n

注意点:(1)逗号表达式的运算过程为:从左往右逐个计算表达式。

(2)逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。

(3)逗号运算符的优先级别在所有运算符中最低。

2.三目运算符

条件表达式?结果1:结果2

如果条件成立,则返回结果1,否则返回结果2

八.位运算符

1. & 按位与   对应的二进制位上,一个为0就是0,全1才是1

一假则假

2. | 按位或   对应的二进制位上,一个为1就是1,全0才是0

一真则真

3. ^ 按位异或  对应的二进制位上,不同为1,相同为0

(1) 多个数相互异或,交换顺序结果不变(类似加法交换律)

(2) 任何数异或0都是原来的数

(3) 相同的数相互异或,结果为0

4. ~ 按位取反  对应的二进制位   0变1  1变0

负数= 正数取反+1    正数取反=负数-1

5. >> 右移  m>>n  向右移动n位

移出来的数删掉,移入位补符号位  (正数补0,负数补1)

使用场景:快速计算一个整数除以2的n次方,对于一个整数来说右移几次就是除以几次方

6. << 左移  m<<n  向左移动n位

移出来的数删掉,移入位补0    左移可能会改变符号位(正负性)

使用场景:当数比较小的时候,可以快速的计算这个数乘以2多少次方

时间: 2024-10-05 03:35:02

黑马程序员-C学习笔记-运算符的相关文章

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS

黑马程序员_OC学习笔记之description方法和sel

OC--description方法 1.Description方法包括类方法和对象方法.(NSObject类所包含) -description(对象方法) 2.使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 3.使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 4.使用@%打印对象如(“@%”,P)默认打印输出为<

黑马程序员_OC学习笔记之@property和@synthesize

[objc] view plaincopyprint? <span style="font-size:24px;">#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int age; int _height; int height; int _weight; int weight; int _money; int money; } @property int ag

黑马程序员——Foundation学习笔记(NSSet和NSMutableSet)

==========android培训.ios培训.java培训.期待与您交流========== 一.NSSet: NSSet NSSet里面存储的元素没有顺序,NSArray中的元素有顺序. NSSet *s = [NSSet set]; // 创建一个空的Set,永远是空,不可变. NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil]; NSString *str = [s2 anyObject]; //

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.

黑马程序员-OC学习笔记之block

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9426    Accepted Submission(s): 4151 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

黑马程序员-OC学习笔记之ARC

---------------------- IOS开发.Android培训.期待与您交流! ----------------------一.什么是ARC        ARC是自动引用计数,苹果官方在Xcode4.2及以后版本中加入的一个内存管理机制,完全取代了程序员人工的内存管理,使得程序员只须关心程序本身.使用ARC,编译器会自动在代码中加入内存管理代码,是一个编译器特性,而不是运行时特性,当然,它也和JAVA的垃圾回收不同,它的本质和手动的内存管理是一样的,只是这些代码编译器会自动添加.

黑马程序员-C学习笔记之预处理指令

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.什么是预处理指令 预处理指令是告诉编译器在编译之前预先处理的一些指令,有宏定义,文件包含,条件编译. 预处理指令一般以 # 号开头,可以出现在文件的任何地方,作用于整个文件. 二.宏定义 宏定义分不带参数的和带参数的宏定义.     1?不带参数的宏定义 #import <stdio.h> #define AGE 10 // 宏名用大写 int ma

黑马程序员-C学习笔记之scanf

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.scanf函数介绍 这也是在stdio.h中声明的一个函数,因此使用前必须加入#include<stdio.h>.调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量. 函数原型为:int scanf(const char*format,...); 二.scanf用