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

C语言 -- 操作符

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

C语言 -- 操作符

操作符
    •   1、 算术操作符
    •   2、移位操作符
    •   3、位操作符
    •   4、赋值操作符
    •   5、单目操作符
    •   6、关系操作符
    •   7、逻辑操作符
    •   8、条件操作符
    •   9、逗号操作符
    •   10、下标引用

操作符释义
算术操作符+ - * / %
移位操作符<< >>
位操作符& | ^
赋值操作符=
单目操作符! ~ ++ - - + - & * sizeof (类型)
关系操作符> < >= <= != ==
逻辑操作符&& ||
条件操作符(三目操作符)a ? b : c
逗号操作符a,b
下标引用、函数调用、结构成员[] () . 和 箭头
  1、 算术操作符
| + | - | * | / | % |
  2、移位操作符
(1)<< :二进制位向左移动,左边丢弃,右边补0
(2)>> :二进制位向右移动:
		 i:右边丢弃,左边补0(逻辑右移);
		ii:右边丢弃,左边补符号位(算术右移,常用)
(3)移位不使用下面写法
a << -5;
b >> -5;
  3、位操作符

    (1)按位与 &

//只有整数才能使用位操作
int a = 3;
int b = 5;
//二进制位相同取1,不同取0
int c = a & b;//c结果为1
//a = 00000000000000000000000000000011
//b = 00000000000000000000000000000101
//c = 00000000000000000000000000000001

    (2)按位或 |

//只有整数才能使用位操作
int a = 3;
int b = 5;
//二进制位有1为1,没有为0
int c = a | b;//c结果为7
//a = 00000000000000000000000000000011
//b = 00000000000000000000000000000101
//c = 00000000000000000000000000000111

    (3)按位异或 ^

//只有整数才能使用位操作
int a = 3;
int b = 5;
//对应的二进制位异或相同为0,不同为1
int c = a | b;//c结果为6
//a = 00000000000000000000000000000011
//b = 00000000000000000000000000000101
//c = 00000000000000000000000000000110

  4、赋值操作符
| = | += | -= | *= | /= | %= | >>= | <<= |
  5、单目操作符

    (1)!

int flag = 1;
	if (flag)
	{
		printf("flag为真n");
	}
	if(!flag)
	{
		printf("flag为假n");
	}

    (2) +、-

a = +a;// +:正值号,默认不写
b = -b;// -:负值

    (3) ++、- -

++a:先++,再使用
a++:先使用,再++
--a:先--,再使用
a--:先使用,再--

    (4) sizeof

//操作数的类型长度(以字节为单位)
	int a = 5;
	printf("%dn", sizeof(a));//计算a所占空间的大小,单位是字节
	printf("%dn", sizeof(int));
	printf("%dn", sizeof a);//sizeof是操作符,不是函数

	char arr[5] = { 0 };
	printf("%dn", sizeof(arr));//计算arr所占空间的大小,单位是字节
	printf("%dn", sizeof(char [5]));
	printf("%dn", sizeof arr);

	short b = 5;
	int c = 10;
	printf("%dn", sizeof(b = c + 2));//结果为2
	printf("%dn", b);//结果为5
	//sizeof括号中放的表达式不参与运算

    (5) ~

~ :对补码进行按位取反,1变为0,0变为1

    (6) &、*

& :取地址操作符
* :解引用操作符(间接引用操作符)
    int s = 10;
	printf("%pn", &s);//打印16进制地址
	int* ps = &s;//ps是用来存放地址,ps就是一个指针变量
	*ps = 20;//解引用,间接访问s
	printf("%dn", s);

    (7)(类型)

int a = (int)3.14;
  6、关系操作符
| > | >= | <= | == | != |
  7、逻辑操作符
// &&:逻辑与,一假则假
if(a > b && a > c)
{
	//a要同时大于b和c才满足条件
	printf("&&")
}
// ||:逻辑或,一真则真
if(a > b || a > c)
{
	//a大于b或者大于c都满足条件
	printf("&&")
}
  8、条件操作符
t = a > b ? a : b;// a大于b,t = a,否则t = b
  9、逗号操作符
exen_one((v1,v2),(v3,v4),v5,v6);
exen_two(v2,v4,v5,v6);
//exen_one和exen_two等价

//逗号表达式要从左到右依次计算,但是整个表达式的结果是最后一个表达式的结果
int a = 1;
int b = 2;
int c = (a = 8, b = b + 1, a -= b);
printf("%dn", c);//结果为5
  10、下标引用

    (1) [ ]下标引用操作符

//	操作数:一个数据名 + 一个索引值
int arr[10];//创建数值
arr[4] = 10;//实用下标引用操作符
//[ ]的两个操作数是arr和9,缺一不可

    (2)( )函数引用操作符

#include 
//函数的定义
int Add(int x, int y)
{
	return x + y;
}
int main()
{
	//( )函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数
	int x = 10;
	int y = 20;
	//函数的调用,()不能省略
	int z = Add(x, y);
	printf("%d n", z);//结果为30
}

    (3) 结构体与访问(点和箭头)

#include 
//创建一个自定义类型
struct Book
{
	//结构体
	//书:书名、书号、价格(结构体成员变量)
	char name[20];
	char id[20];
	int price;
};
int main()
{
//初始化自定义类型
	struct Book b = { "C语言","C123456",100 };
	//结构体变量 . 成员名
	printf("书名:%s n", b.name);
	printf("书号:%s n", b.id);
	printf("价格:%d n", b.price);

	printf("---------------n");

	struct Book* p = &b;
	//结构体指针 -> 成员名
	printf("书名:%s n", p -> name);
	printf("书号:%s n", p -> id);
	printf("价格:%d n", p -> price);

	printf("---------------n");

	//结构体指针 . 成员名
	printf("书名:%s n", (*p).name);
	printf("书号:%s n", (*p).id);
	printf("价格:%d n", (*p).price);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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