栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言笔记: 5.操作符详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言笔记: 5.操作符详解

C语言笔记: 5.操作符详解

前言一、移位操作符二、按位操作符三、赋值操作符四.单目操作符五、关系操作符六、逻辑操作符七、条件操作符(三目操作符)八、逗号表达式九、下标引用操作符十、函数调用操作符十一、结构成员操作符


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、移位操作符

<<左移 和 >>右移
操作对象是二进制数
移动方法:(当前一般使用算术右移)
算术右移:右边丢弃左边补原符号位
逻辑右移:右边丢弃左边补零
左移:左边丢弃右边补零
对于移动操作符来说不能用于小数,只能用于整数。

对于二进制有原码,反码,补码三种形式,在电脑内存中是以二进制的补码形式存储
对于正数,原反补相同
对于负数,原码取反为反码,反码+1为补码
对于一个有符号的二进制数,最高位是符号位,正数的最高位为零,负数的最高位为1

二、按位操作符

操作对象:二进制
&按位与:有一个0则为0;两个为1则为1
如 a=3,b=5
a&b=(0011)&(0101)=0001=1
|按位或:只要有一个1则为1;两个为0才为0
如 a=3,b=5
a|b=(0011)|(0101)=0111=7
^按位异或:相同为0;相异为1
如 a=3,b=5
ab=(0011)(0101)=0110=6

例题:不出创建临时变量将两个整型变量交换
int a
int b
(1)加减法
a=a+b;
b=a-b;
a=a-b;
(2)异或法
如a=3;//0011
b=5;//0101;
a=a^b;//0011^0101=0110=6
b=a^b;//0110^0101=0011=3
a=a^b;0110^0011=0101=5

求一个整数存储在内存中的二进制的个数–>即求二进制补码形式为1的个数
思路:对于正数:如int a=5;//补码:00000000 00000000 00000000 00000101
只需要每一位按位与0即可,只要为1&0=1
对于负数:补码与原码不同,
如int a=-5;补码:11111111 11111111 11111111 11111111 11111010
用按位与同样与0也可以求1的个数

代码:
int main()
{
	int a = 5;
	int sz = sizeof(a);
	int count=0;
	int i = 0;
	for (i = 0; i < sz;i++)
	{
		
		if ((a >> i) & 1 == 1)
			count++;
	}
	printf("%d", count);
	return 0;

}
三、赋值操作符

赋值操作符:=
一些特殊赋值(复合赋值):
a+=1;–>a=a+2;
-=
>>=
<<=
*=
%=
/=
&=
|=
^=
都可以写成复合效果

四.单目操作符

只有一个操作数
!表示假变为真,真变为假
如a=10; !a=0;
a=0; !a=1;(1表示真,所有非0数字都表示真,不过一般用1表示真)
如if(a)表示a为真则执行if语句;
If(!a)表示a为假则执行if语句;
- 表示负值
+ 表示正值
*表示解引用操作符(作用是通过地址找到相对应的对象,一般用于指针里面)
sizeof 表示求……的大小(用来计算变量所占内存空间的大小,单位是字节)


int a=4 sizeof(a)=4;
char b=”s” sizeof(b)=1;
int arr[10]={0} sizeof(arr)=40;
char arr[10]={0} sizeof(arr)=10;

~ 按位取反
如int a=0;//补码:00000000 00000000 00000000 00000000
~a–>补码:11111111 111111111 111111111 111111111
反码:11111111 111111111 111111111 111111110
原码:10000000 00000000 00000000 00000001
结果为-1

++和- -
前置:表示先++(- -)再使用
后置:表示先使用再++(- -)
如a=5;
printf("%d",++a);输出6
printf("%d",a++);输出5

间接访问操作符*

五、关系操作符

大于:>
大于等于:>=
小于:<
小于等于:<=
不等于:!=
等于:==

六、逻辑操作符

逻辑与&& 表示有一个为假则为假
逻辑或|| 表示有一个为真则为真

七、条件操作符(三目操作符)

格式:exp1?exp2:exp3
意思是表达式1为真则执行表达式2,表达式1为假则执行表达式3

如:求a与b中的较大值
a>b?a:b

八、逗号表达式

格式:exp1,exp2,exp3,……,expn
意思是这整个表达式是从左向右依次执行,最后输出的结果是最右边那个表达式(即expn)的结果

如:
int a=1;
int b=2;
int c=(a>b,a=b+10,a,b=a+1);
结果c=13

九、下标引用操作符

下标引用操作符:[]
主要用于数组

如 一维数组:arr[10]={0};
定义时:10表示arr一共有10个元素
使用时:arr[0]表示数组的第1个元素
二维数组:arr[10][10]={0};
定义时:第一个10表示arr一共有10个行,第二个10表示arr一共有10列,所以两个10一起表示arr一共有100个元素
使用时:arr[0]表示数组的第1行元素
arr[0][0]表示数组的第一行第一个元素

十、函数调用操作符

函数调用操作符:()

如:int max=get_max();
调用函数的时候()就是函数调用操作符

十一、结构成员操作符

访问一个结构体成员一般格式:
. 结构体.成员名
-> 结构体指针->成员名
例如`

struct student
{
	char name[20];
	char sex[20];
	char tel[20];


};
int main()
{
	struct student s1 = { "张三", "男", "110" };
	struct student* p1 = &s1;
	printf("%sn", s1.name);
	printf("%sn", s1.sex);
	printf("%sn", s1.tel);
	printf("%sn", p1->name);
	printf("%sn", p1->sex);
	printf("%sn", p1->tel);

	return 0;

}`
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/766717.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号