操作符详解(1)

操作符的分类:

算术操作符: + - * / %
移位操作符: << >>
位操作符: & | ^
赋值操作符: = += -= *= /= %= <<= >>= &= |= ^=
单⽬操作符: !、++--&*+-~ sizeof(类型)
关系操作符: > >= < <= == !=
逻辑操作符: && ||
条件操作符: ? :
逗号表达式: ,
下标引⽤: []
函数调⽤: ()
结构成员访问: . ->

1.算术操作符

在写代码时候,⼀定会涉及到计算。
C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * / % ,这些操作符都是 双⽬操作符。

1.1 + -

+ - ⽤来完成加法和减法。
+ - 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符。

代码演示:

int x = 4 + 22;
int y = 61 - 23;
printf("%d\n", x);
printf("%d\n", y);
return 0;

 输出结果:

1.2

int num = 5;
printf("%d\n", num * num); 

1.3

 除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。

float x = 6 / 4;
int y = 6 / 4;
printf("%f\n", x); 
printf("%d\n", y); 

输出结果; 

 

上⾯⽰例中,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是
1.5 原因就在于 C 语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。
如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时 C 语⾔就会进⾏浮点数除法。
float x = 6.0 / 4; // 或者写成 6 / 4.0
 printf("%f\n", x); // 输出 1.500000

1.4 % 

运算符 % 表⽰求模运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。

负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。

printf("%d\n", 11 % 5);
printf("%d\n", 11 % -5);
printf("%d\n", -11 % -5); 
printf("%d\n", -11 % 5); 

输出结果;

2.sizeof 

sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字 节。
sizeof 操作符的操作数可以是类型,也可是变量或者表达式。
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(a));
printf("%zd\n", sizeof(a=b+1));
printf("%zd\n", sizeof(1.5+1));
sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
sizeof 的计算结果是 size_t 类型的。
int a = 3;
short b = 1.5;
printf("%zd\n", sizeof(a));
printf("%zd\n", sizeof a);
printf("%zd\n", sizeof(a=b+1));
printf("%d\n", a);
zeof 在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在 程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。

3.赋值操作符:=和复合赋值 

3.1赋值操作符 =

在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。

赋值操作符 =是⼀个随时可以给变量赋值的操作符。 

	int a;
	a = 100;

3.2复合赋值符

在写代码时,我们经常可能对⼀个数进⾏⾃增、⾃减的操作,如下代码:
1 int a = 10;
2 a = a+3;
3 a = a-2;
这样代码C语⾔给提供了更加⽅便的写法:
1 int a = 10;
2 a += 3;
3 a -= 2;
C语⾔中提供了复合赋值符,⽅便我们编写代码,这些赋值符有:

 

4.单⽬操作符:++、--、+、-

前⾯介绍的操作符都是双⽬操作符,有2个操作数的。C语⾔中还有⼀些操作符只有⼀个操作数,被称
单⽬操作符 ++ -- +( ) -( ) 就是单⽬操作符的.

4.1++和--

++是⼀种⾃增的操作符,⼜分为前置++和后置++,--是⼀种⾃减的操作符,也分为前置--和后置--.
4.1.1前置++:
int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
printf("a=%d b=%d\n",a , b);

计算⼝诀:先+1,后使⽤; 

 4.1.2后置++;
int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);

计算⼝诀:先使⽤,后+1 

4.1.3前置--
如果你听懂了前置++,那前置--是同理的,只是把加1,换成了减1;
计算⼝诀:先-1,后使⽤
int a = 10;
int b = --a;//--的操作数是a,是放在a的前⾯的,就是前置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 9
4.1.4后置--
同理后置--类似于后置++,只是把加⼀换成了减⼀
计算⼝诀:先使⽤,后-1
int a = 10;
int b = a--;//--的操作数是a,是放在a的后⾯的,就是后置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 10

4.2+ 和 -

4.2.1这⾥的+是正号,-是负号,都是单⽬操作符。
运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。
 int a = +10; 等价于 int a = 10;
4.2.2运算符 - ⽤来改变⼀个值的正负号

负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负数。

int a = 10;
int b = -a;
int c = -10;
printf("b=%d c=%d\n", b, c);//这⾥的b和c都是-10
int a = -10;
int b = -a;
printf("b=%d\n", b);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值