初识操作符C语言


C语言的操作符分为以下10种:

算术操作符移位操作符
算术操作符移位操作符
位操作符赋值操作符
单目操作符关系操作符
逻辑操作符条件操作符
逗号表达式下标引用、函数调用和结构成员

一、算术操作符

+-*/%
取模(余)

+, -, *, 一般的简单运算就不做事例了。
除号的两端有一个是小数,执行的就是小数除法。

int a = 9/2;
float b = 9/2;
float c = 9/2.0;

a的结果是:4
b的结果是:4.000000
c的结果是:4.500000

int a = 9%2;

a的结果是:1

二、移位操作符

<<左移操作符>>右移操作符

移位操作符 - - 移动的是二进制位

int a = 2;
int b = a << 1; //a的二进制也就是2的二进制位向左移动一位

b的结果是:4

解题思路:
2的二进制是10
a是要放进整型里的,整型是4个字节,一个字节是8个比特位
a的二进制序列(也就是2的二进制序列) 就是32个比特位(32比特位=4个字节X8个比特位)

在这里插入图片描述
去掉前面的一个0,后面补一个0
二进制的后面100这个1代表的是2的2次方。
右移操作符类似

三、位操作符

&I^

&:按位与(有0为0)
| :按位或(有1为1)
^:按位异或(相同为0,不同为1)

四、赋值操作符

+=-=*=/=&=
=^=I=>>=<<=
int a = 2;
a += 3;
a %= 3;

上面的+=,%=这种叫复合赋值,其实a += 3和a = a +3是一样的。

它们实际上是一种缩写形式,使得对变量的改变更为简洁。

五、单目操作符

!逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制按位取反
- -前置、后置- -
++前置、后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换

单目操作符:只有一个操作数。例:!a
双目操作符:有两个操作数。例:a+b

!:真的取假的,假的取真的。
+、-:a = -a,a = +a(通常正值不写+号)
sizeof是操作符不是函数,计算类型、数组或者变量的大小,计算变量时可以不加括号。
数组:
在这里插入图片描述~:把所有二进制位中数字,1变成0,0变成1

int a = 0;
printf("%d", ~a);

a的结果是:-1
解题思路:
注!整数在内存中存储的是补码
注!整数在内存中存储的是补码
注!整数在内存中存储的是补码
重要的事情说三遍
一个整数的二进制表示有三种:原码,反码,补码
-1:
一个整数它的最高位表示符号位,最高位1表示负数
因为是-1它的最高位是1
10000000000000000000000000000001(原码)
最高位是符号位,后面是有效位
表示的十进制是1,(我们平常使用的就是十进制)

11111111111111111111111111111110(反码)
符号位不变其它位按位取反

11111111111111111111111111111111(补码)√
反码的二进制加1得到的就是补码

这些是对负数的计算

正整数
三码相同
原码的取反+1得到补码,补码-1得到反码,反码取反得到原码

++:前置++(先++,后使用)后置++(先使用,再++)- -类似

int a = 10;
int b = ++a;
printf("%d", b);
printf("%d", a);
int c = 20;
int d = a++;
printf("%d", d);
printf("%d", c);

b的结果是:11
a的结果是:11
d的结果是:10
c的结果是:11

(类型):强制类型转换,会丢失精度

int a = (int)3.14;
printf("%d\n", a);

a的结果是:3

六、关系操作符

>>=!=
<<===

!=是不等于,==是相等

七、逻辑操作符

&&逻辑与
II逻辑或

&&:两个都得满足
||:只需一个满足

八、条件操作符

也叫三目操作符
exp1 ? exp2 : exp3
exp1是判断条件,为真执行exp2,为假执行exp3
例:
exp1 成立,exp2计算,整个表达式的结构是:exp2的结果
exp1 不成立,exp3计算,整个表达式的结构是:exp3的结果

	int a = 0;
	int b = 3;
	int max = 0;
	if (a > b)
		max = a;
	else
		max = b;
	max = a > b ? a : b;
	printf("%d\n", max);

max的结果是:3

九、逗号表达式

exp1, exp2, exp3, …expN

逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

十、下标引用、函数调用和结构成员

1.[ ] 下标引用操作符
操作数:一个数组名 + 一个索引值

int arr[5] = {1,2,3,4,5};
printf("%d", arr[3]);

结果是:4

2.( ) 函数调用操作符
调用函数的时候,函数名后的()就是函数调用操作符。
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

3.访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名


&*.->

这四个是我目前没学到的操作符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值