c语言操作符

 

操作符

一、算数操作符

+    -   *   /   %

1. 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3. %操作符的两个操作数必须为整数。返回的是整除之后的余数。

移位操作符

1.左移操作符  << (x<<1等同于x*2)

移位规则:左边抛弃,右边补零

2.右移操作符  >> (x<<1等同于x/2)

移位规则:左边抛弃,右边补零

右移运算分两种:(1)逻辑移位左边用0填充,右边丢弃(2) 算术移位左边用原该值的符号位填充,右边丢弃

注意:对于移位运算符,不要移动负数位,这个标准是未定义的

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

 

 

三、位操作符

 

 

&  //按位与 0011&1100==0000

|   //按位或 0011|1100==1111

^  //按位异或 0011^1100==1111

四、赋值操作符

=

五、复合赋值符

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

六、单目操作符

! 逻辑反操作

 - 负值

 + 正值

& 取地址

 sizeof 操作数的类型长度(以字节为单位)

 ~ 对一个数的二进制按位取反

 -- 前置

 后置--

 ++ 前置

 后置  ++

 *    间接访问操作符(解引用操作符)

(类型)   强制类型转换

这里讲解sizeof

int main()
 {
 	int a = 0;
 	printf("%d\n", sizeof(a));//4
 	printf("%d\n", sizeof(int));//4
 
 	printf("%d\n", sizeof a);
 	printf("%d\n", sizeof int);//错误的表达
 	return 0;
 }

 

sizeof和数组

 

1. sizeof(数组名)--数组名表示整个数组sizeof(数组名)求取的是整个数组的大小,单位是字节

2. &数组名---数组名也表示整个数组,所以&数组名,取出的是整个数组的地址

3. 除此之外,所有遇到的数组名都是首元素的地址

4.sizeof()内部表达式不参与运算

七、关系操作符

>

>=

<

<=

!= 用于测试“不相等

== 用于测试“相等”

八、逻辑操作符

&& 逻辑与

||  逻辑或

 

1&2----->0
1&&2---->1
1|2----->3
1||2---->1

 

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++&&++b&&d++;//(1)
	//i = a++||++b||d++;(2)
	printf("a=%d\n b=%d\n c=%d\n d=%d\n",a,b,c,d);
	system("pause");
	return 0;
}

 

结果(1) 1 2 3 4对于逻辑与,前面为假后面不用算

 

结果(2) 1 3 3 4对于逻辑或,前面为真后面不用

九、条件操作符

exp1?exp2:exp3

十、逗号表达式

exp1,exp2,:exp3,……,expN

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

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

1.[]

操作数:一个数组名,加一个索引值

2.()

函数调用操作符

接受一个或多个操作数:第一个是数组名,剩余的十传递给函数的参数

3.访问一个结构体成员

 

 

两种访问成员的形式

 

#include <string.h>
#include <stdio.h>
#include<Windows.h>
struct Stu
{
	char name[20];
	short int age;
	char id[15];
	char sex[6];
};

void test(struct Stu* ps)
{
	strcpy(ps->name, "王五");
	ps->age = 40;
	//(*ps).name
	strcpy((*ps).name, "李四");
	(*ps).age = 30;
}
int main()
{
	struct Stu s;
	test(&s);
	printf("%s\n", s.name);
	printf("%d\n", s.age);
 	strcpy(s.name, "张三");
 	s.age = 20;
 	strcpy(s.sex, "男");
 	printf("%s\n", s.name);
 	printf("%d\n", s.age);
 	printf("%s\n", s.sex);
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值