c语言操作符

操作符

  1. 算术操作符
  2. 移位操作符
  3. 位操作符
  4. 赋值操作符
  5. 单目操作符
  6. 关系操作符
  7. 逻辑操作符
  8. 条件操作符
  9. 逗号表达式
  10. 下标引用、函数调用和结构成员

算术操作符

+ - * / %

注意:
1.对于/操作符,若两个操作数均为整数,则执行整数除法;若有一个为浮点数,则执行浮点数除法
2.%的两个操作数必须为整数

移位操作符

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

左移操作符移位规则:

左边抛弃、右边补0

注意:
num<<1运算完之后num的值不变,还存在cpu中;
若想改变其值,需要进行赋值操作,即num<<=1,此时它存在内存中。

右移操作符移位规则:

1.逻辑移位 左边用0填充,右边丢弃
2.算术移位 左边用原值的符号位填充,右边丢弃

一般来讲,若右移的源操作数为无符号数,则逻辑移位;若为有符号数,则算术移位。
!!! 警告:对于移位运算符,不能移动负数位。例如:

int num = 10;
num>>-1;//error

位操作符

& //按位与
| //按位或
^ //按位异或

注意:他们的操作数必须为整数。

赋值操作符

赋值操作符可以连续使用,比如:

int a=0;
int x=10;
int y=20;
a=x=y+1;

这种方式最好不要使用,容易使别人误会。可以改成下面的形式:

x=y+1;
a=x;

这样写更清晰且易于调试。

复合赋值符:

+=
-=
*=
/=
%=
>>=
&=
|=
^=

单目运算符

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

注意:强制类型转换不是转化,没有修改目标转换的内容。

sizeof和数组:

#include<stdio.h>
#include<stdlib.h>
#pragma warning (disable:4996)
void test1(int arr[]) {//注意数组传参要降维为指针
 printf("%d\n", sizeof(arr));//输出4
}
void test2(char ch[]) {
 printf("%d\n", sizeof(ch));//输出4
}
int main()
{
 int arr[10] = { 0 };
 char ch[10] = { 0 };
 printf("%d\n", sizeof(arr));//输出40
 printf("%d\n", sizeof(ch));//输出10
 test1(arr);
 test2(ch);
 system("pause");
 return 0;
}

关系操作符

>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”

注意:编程时区别==和=的不同。

逻辑操作符

&& 逻辑与
|| 逻辑或

注意:区别逻辑与和按位与 and 逻辑或和按位或

360笔试题:

#include<stdio.h>
#include<stdlib.h>
#pragma warning (disable:4996)
int main()
{
 int i = 0, a = 0, b = 2, c = 3, d = 4;
 i = a++ && ++ b && d++;//输出结果为1 2 3 4
 //i=a++||++b||d++;//输出结果为1 3 3 4
 printf("a=%d\n b=%d\n c=%d\n d=%d\n", a, b, c, d);
 system("pause");
 return 0;
}

条件操作符

exp1 ? exp2 : exp3

逗号表达式

exp1,exp2,exp3,…expN

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

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

1.[ ] 下标引用操作符
操作数:一个数组名+一个索引值。
2.()函数调用操作符
可有一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3.访问一个结构的成员

.结构体.成员名
->结构体指针->成员名

如:stu.age=20;
pstu->=20;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值