搜索
简帛阁>技术文章>C语言初阶第四篇:讲一讲操作符,史上最全C语言操作符介绍(全部的操作符解析)

C语言初阶第四篇:讲一讲操作符,史上最全C语言操作符介绍(全部的操作符解析)

雄关漫道真如铁,而今迈步从头越
老铁们,咱们上一篇文章把C语言语句的知识点给过了一遍,今天我们就从单目操作符与双目操作符和三目操作符来说一说操作符,咱们开始吧!

第四篇

  • 一、单目操作符
  • 二、双目操作符
    • 1、算术运算符
    • 2、关系运算符
    • 3、逻辑操作符
  • 三、三目操作符--条件操作符
  • 四、逗号运算符
  • 五、初等运算符--下标引用,函数调用和结构体成员
  • 六、位运算符

一、单目操作符

单目运算符就是只有一个操作数

单目运算符含义
!就是取反的意思
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制进行取反
- -前置、后置–
++前置、后置++
*间接访问操作符(常见于指针解引用)
(类型)强制类型转换

我们现在具体看一下这些操作符(前面的几个比较好理解,我们从后面的挑几个说):

前置++和后置++
有什么区别?前置++就是先自增一,再使用,后置++就是先使用,再自增一。
前置- - 和后置- -
一样的,在前面就先减再用,在后面就先用再减。
但是注意,像这种错误的代码没必要研究,不同的编译器可能结果不一样:

	int a = 1;
	int b = (++a) + (++a) + (++a);//2+3+4
	printf("%d\n", b);

关于自增和自减,我们只需要明白什么时候增,什么时候减就好了。

至于解引用操作符,就可以理解为取出地址上的值,进行使用,一般用于指针。更详细的说明,我们会在指针的文章里深入探讨

这些操作符,称为单目是因为只对一个数据进行操作,所以,不要记混了双目操作符和单目操作符的概念呀!

二、双目操作符

1、算术运算符

运算符含义
*将运算符左右两边的数相乘
/运算符左边的数除右边的数
%进行取余
+相加
-相减

算数运算符的运算次序就是我们小学到现在一直使用的次序。

2、关系运算符

C语言提供6种关系运算符,如表所示:

运算符名称功能
<小于a小于b时返回真;否则返回假
<=小于等于a小于等于b时返回真;否则返回假
>大于a大于b时返回真;否则返回假
>=大于等于a大于等于b时返回真;否则返回假
==等于a等于b时返回真;否则返回假
!=不等于a不等于b时返回真;否则返回假

(注意加黑的地方,不要写错表达式了,特别是 赋值表达式 一个 = 和 等于 两个 = =)

这里注意一点:
关系运算符的值只能是0或1。
关系运算符的值为真时,结果值都为1。
关系运算符的值为假时,结果值都为0。

前4种关系运算符的优先级别相同,后两种也相同。前四种高于后两种。
关系运算符的优先级低于算术运算符。
关系运算符的优先级高于赋值运算符。

3、逻辑操作符

逻辑操作符只有三个,一个是与 ” && “ 一个是或 “ || ”。
另一个是单目运算符里的非 “ !”

&& 的判断顺序是从左至右,如果左边判断为假,那么右边不判断。
|| 判断顺序不区分,两边都要判断,即使左边为假,也继续判断右边的真假。

三、三目操作符–条件操作符

**exp1 ? exp2 : exp3 **

(exp就是expression,即表达式)
这也是C语言里唯一一个三目操作符。

意思是:如果表达式1的结果为真,就计算表达式2,否则计算表达式3 。
例如:

int main()
{
	int a = 4;
	int b = 3;
	int c = 5;
	int d = 6;
	int e;
	e = a > b ? c > d ? d > a:c:b;
	printf("%d\n", e);//结果是5
	return 0;
}

为什么结果是5?我们首先对式子进行切割:
e = (a > b ) ? ( c > d ? d > a : c) : b ;
这是第一步切割,我们发现应该计算第二个表达式:
(c > d ) ? ( d > a ) : c
这一步我们发现c>d为假,所以取第三个表达式,就是c,那么最终结果也就是c。

将这个表达式作为一个整体,就不会出错了。

四、逗号运算符

(exp1,exp2,exp3,exp4…)

这个就是逗号表达式了,注意,里面同样的,可以有很多表达式。

逗号表达式的特点:表达式从左向右依次计算,是最后一个表达式的结果

int main()
{
	int a = 3;
	int b = 20;
	int c = 0;
	int d;
	d = (a -= 3, b += a, c = a - b, b = a - 4);
	//计算下来 a = 0, b = 20 , c = -20 , b = -4
	printf("%d\n", d);
	//逗号表达式的特点:表达式从左向右依次计算,是最后一个表达式的结果
	return 0;
}

所以这段代码的最终结果也就是-4。

五、初等运算符–下标引用,函数调用和结构体成员

()这个是函数调用使用的运算符

int main(){......}

[]这个是下标引用运算符,一般用于数组的操作

int arr[10] = { 0 };
int b = arr[5];
printf("%d\n",b);

[ . ]是结构体成员访问:

#include<stdio.h>
typedef struct StudentInfo {
	int age;
	char *name;
	char *ID;
}StudentInfo;
StudentInfo s;
int main()
{
	s.age = 20;
	s.name = "xiaohong";
	s.ID = "98765432112345";
	printf("%d %s %s\n", s.age, s.name, s.ID);	
	return 0;
}

[ -> ]是结构体指针成员的访问:

#include<stdio.h>
#include<string.h>
typedef struct StudentInfo {
	int age;
	char *name;
	char *ID;
}StudentInfo;
StudentInfo s;
int main()
{
	StudentInfo* ps = &s;
	ps->age = 19;
	ps->name = "xiaoming";
	ps->ID = "12345678901234";
	printf("%d %s %s\n",ps->age,ps->name,ps->ID);
	return 0;
}

== 至于 [ -> ]和 [ . ] 这两个操作符的更加详细的说明,我们会在结构体的文章里说明。==

六、位运算符

位运算就是基于二进制的运算,一般用的不是很多(笔者有一篇哈夫曼压缩的文章,用到了位运算)
按位与运算符【&】
按位异或运算符【^】
按位或运算符【|】
左移动运算符【<<】
右移动运算符【>>】
我们用实际代码和来说明这些运算符的作用:

int main()
{
	int a = 1;
	int b = 4;
	printf("%d\n", a & b);//0
	printf("%d\n", a ^ b);//5
	printf("%d\n", a | b);//5
	int c = 2;
	printf("%d\n", c << 2);//8
	printf("%d\n", c >> 2);//0
	return 0;
}

这些代码后面已经跟上了结果,现在我们来分析一下结果:
由于位运算基于二进制,所以我们先看看a,b,c的二进制都是多少:
a – 00000001
b – 00000100
c – 00000010
现在我们来看一看a&b是什么,
a&b,也就是一个新的二进制:00000000,这个二进制数的值是0
之后是a^b,异或,就是两个不一样就取1,两个一样就取0(一男一女生孩子)
a^b,新的二进制是:00000101,这个二进制数的值是5
之后是“按位或”,”按位或“是能取啥就取啥,有1就一定取:
a|b,新的二进制是: 00000101,值也是5(注意区分它和异或的区别)

然后就到了位移运算,这个就相对简单一点,
c << 2,数字左移2位,二进制就变成了 00001000,也就是8,
c >> 2,数字右移2位,二进制就变成了 00000000,也就是0。

今天的分享也就到这里了,希望带来了帮助!也祝大家小年快乐!
至此,我们就把C语言中所有能见到的运算符给说了一遍,欢迎指正批评哦!

C语言操作,包含算术操作、移位操作、位操作、赋值操作、单目操作、关系操作、逻辑操作、条件操作、逗号操作以及下标引用操作等。1、算术操作算术操作包含+,,*,/,%。①除了%操
C语言中的操作优先级详细介绍C语言操作优先级大全,当然c++,ObjectiveC,大部分语言都试用。下面是来自TheCProgrammingLanguage2th总结。Operators
操作分类算术操作移位操作操作逻辑操作逗号表达式表达式求值隐式类型转换算术转换操作属性xwg今天就带各位大佬来了解一波C语言操作操作分类常见操作分别如下:算术操作
目录一单目操作:二关系操作三条件操作四逗号表达式五逻辑操作总结一单目操作:!:逻辑反操作;:负数操作;+:整数操作;:取地址操作;sizeof:操作数类型长度操作;sizeof
关于操作之前简单介绍过一点,这详细介绍C语言中的操作使用和一些细节目录1算数操作2移位操作21移位操作基础22移位操作移动3位操作4赋值操作5单目操作6关系操作7逻辑操作8条
C语言操作一、操作分类二、算术操作三、移位操作符左移操作移位规则:右移操作移位规则:四、位操作符按位与&按位或|按位异或^练习题一:练习题二:究极蛇皮之优化:五、赋值操作简单赋值操作:复
+*/(加减乘除>><<(大于大于等于小于小于等于!(测试等于测试不等于||!(逻辑与逻辑或逻辑非>><<(位右移位左移!(按位与按位或^~
目录一、算数操作二、移位操作三、位操作四、赋值操作五、单目操作六、关系操作七、逻辑操作八、条件操作九、逗号表达式十、下标引用,函数调用,结构成员十一、操作优先级你是否觉得C语言中的
目录一、++与操作本质二、++与操作使用分析三、小结一、++与操作本质++和操作对应两条汇编指令前置变量自增(减1取变量值后置取变量值变量自增(减1下面看一段神奇代码:includ
先,说起操作,有算术操作、赋值操作、关系操作、单目操作等等一系列操作,接下来给大家简单了解一下各种操作,并给出自己理解和需要注意地方,那么接下来,开始进入学习环节啦!算术操作