C语言——操作符详解

这篇具有很好参考价值的文章主要介绍了C语言——操作符详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈喽,大家好,今天我们来学习C语言中的各中操作符。

目录

1.操作符的分类

2.算数操作符

整数的二进制表示

3.位移操作符

3.1左移操作符

3.2右移操作符

4.位操作符

5.赋值操作符

6.单目操作符

6.1 单目操作符介绍

~ 的用法:

6.2 sizeof 和 数组

7.关系操作符

8.逻辑操作符

9. 条件操作符

10. 逗号表达式

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


1.操作符的分类

算术操作符 :  +  -  *  /  %

移位操作符 :  <<    >>

位操作符 :  &  |  ^

赋值操作符: =  +=  -=  *=  /= 

单目操作符 :  !   sizeof   +   -    ~  &  *

关系操作符 : >  <  >=  <=  ==  !=

逻辑操作符 :  &&  ||

条件操作符 : ? : :

逗号表达式 : ,

下标引用、函数调用和结构成员 : [ ]   ()   .   ->

 下面我们将一一学习这些操作符

2.算数操作符

   +       -       *      /       %

这里的 “+”  “ - ”  “ * ” 是我们非常熟悉的,就不再介绍了,但“ / ” 和“ % ”值得我们注意

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

整数的二进制表示

整数的二进制表示有三种形式:

原码

反码

补码

1.正整数原码,反码,补码相同

2.负数的原码,反码,补码需要计算

 不管是正整数还是负整数都可以写出二进制原码

1.根据正负直接写出的二进制序列就是原码

C语言——操作符详解

 对于正数15,它的原码,反码,补码相同,而负数则可通过下图的方式进行计算:

C语言——操作符详解

 整数在内存中存储的是补码,计算的时候也是使用补码计算的

3.位移操作符

<<  左移操作符

>>  右移操作符

注:移位操作符的操作数只能是整数。

 这里左移和右移移动的是二进制

3.1左移操作符

我们来分析下面的代码

C语言——操作符详解

右移分为两种:

算数右移右边的丢弃,左边补原来的符号位

逻辑右移右边的丢弃,左边直接补0

一般编译器采用的是算数右移,C语言没有明确规定到底是算数唯一还是逻辑位移。

C语言——操作符详解

  让我来运行上面的代码:

C语言——操作符详解

 此时a的值还是15,但b得到的是a右移一位的结果7,而且a的值没有发生改变

判断VS编译器采用的是逻辑位移还是算数位移:

使用下面的代码来判断:

C语言——操作符详解

 因为-15用两种位移产生的结果是不同的:

C语言——操作符详解

 上述代码运行结果:

C语言——操作符详解

 因此VS编译器采用的是算数位移。

而且我们发现右移一位对正数有 /2 (除2)的效果

3.2右移操作符

左移操作符就是左边丢弃,右边补0

 同样用代码来学习:

C语言——操作符详解

 C语言——操作符详解

C语言——操作符详解

 警告⚠ :

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

4.位操作符

位操作符有:

&    按位与

 |    按位或

   按位异或

注:他们的操作数必须是整数

按位与  &

按位与也是操作二进制位,对应两个二进制的每一位,有0则为0,两个同时为1才是1.

分析下面代码运行的结果:

C语言——操作符详解

 C语言——操作符详解

 程序运行结果:C语言——操作符详解

按位或 |

按位或计算方法:对应两个二进制的每一位,有1则为1,两个同时为0才是0

分析下面代码运行的结果:

C语言——操作符详解

C语言——操作符详解

  程序运行结果:C语言——操作符详解

按位异或 ^

 按位异或计算方法:对应两个二进制的为一位,相同则为0,相异则为1

分析下面代码结果:

C语言——操作符详解

C语言——操作符详解

 程序输出结果:

C语言——操作符详解

 一道面试题:

 不能创建临时变量(第三个变量),实现两个数的交换。

 方法一:

C语言——操作符详解

 方法二:

C语言——操作符详解

 原理:

C语言——操作符详解

 两种方法都能交换a,b,但方法一可能会溢出,而方法而不会

C语言——操作符详解

5.赋值操作符

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋 值。

C语言——操作符详解

 复合赋值符

+=

-=

*=

/=

%=

>>=

<<= 

&=

|=

^=

这些运算符都可以写成复合的效果

C语言——操作符详解

6.单目操作符

6.1 单目操作符介绍

C语言——操作符详解

~ 的用法:

~ 对一个数的补码二进制位取反,包括符号位

C语言——操作符详解

C语言——操作符详解

C语言——操作符详解

扩展:将二进制某一位由0改成1,1改成0的方法

C语言——操作符详解

6.2 sizeof 和 数组

sizeof是一个操作符,不是函数,sizeof计算的是类型创建变量的大小,单位是字节

sizeof用法:

C语言——操作符详解

C语言——操作符详解

 sizeof计算数组大小:

C语言——操作符详解

 C语言——操作符详解

 分析下面的代码:

void test1(int arr[])
{
	printf("%d\n", sizeof(arr));//(2)
}
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));//(1)
	printf("%d\n", sizeof(ch));//(3)
	test1(arr);
	test2(ch);
	return 0;
}
问:
(1)、(2)两个地方分别输出多少?
(3)、(4)两个地方分别输出多少?

 再(2),(4)中打印的是指针变量的大小,32位系统下4个字节,64位系统下8个字节C语言——操作符详解

7.关系操作符

C语言——操作符详解

8.逻辑操作符

C语言——操作符详解

 闰年的判断:

int main()
{
	int y = 0;
	scanf("%d", &y);
	if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
	{
		printf("是闰年\n");
	}
	else
	{
		printf("不是闰年\n");
	}
	return 0;
}

 笔试题

程序的输出结果是什么?

C语言——操作符详解

C语言——操作符详解

 &&操作符,左边为,右边就不计算了

程序的输出结果是什么?

C语言——操作符详解

 C语言——操作符详解

  ||操作符,左边为,右边就不计算了

区分逻辑与按位与

区分逻辑或按位或

9. 条件操作符

exp1 ? exp2 : exp3

条件操作符也称为三目操作符(有三个操作数)

C语言——操作符详解

 条件操作符可以简化代码:

C语言——操作符详解

 用条件操作符求两数的较大值:

C语言——操作符详解

10. 逗号表达式

exp1,  exp2,  exp3, …expN

逗号表达式,就是用逗号隔开的多个表达式。

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

分析:

C语言——操作符详解

 答案是13

逗号表达式的某些妙用:

C语言——操作符详解

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

1. [ ] 下标引用操作符

   操作数:一个数组名 + 一个索引值

C语言——操作符详解

2. ( ) 函数调用操作符

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

struct Book
{
	char name[30];
	char author[20];
	float price;
};
void Print(struct Book* p)
{
	//printf("%s %s %.1f\n", (*p).name, (*p).author, (*p).price);
	printf("%s %s %.1f\n", p->name, p->author, p->price);
}
int main()
{
	struct Book b1 = { "C语言","李华",30.5f };
	struct Book b2 = { "数据结构","张三",50.5f };
	printf("%s %s %.1f\n", b1.name, b1.author, b1.price);
	printf("%s %s %.1f\n", b2.name, b2.author, b2.price);
	Print(&b1);
	Print(&b2);
	return 0;
}

C语言——操作符详解

3. 访问一个结构的成员

.      结构体.成员名

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

struct Book
{
	char name[30];
	char author[20];
	float price;
};
void Print(struct Book* p)
{
	//printf("%s %s %.1f\n", (*p).name, (*p).author, (*p).price);
	printf("%s %s %.1f\n", p->name, p->author, p->price);
}
int main()
{
	struct Book b1 = { "C语言","李华",30.5f };
	struct Book b2 = { "数据结构","张三",50.5f };
	printf("%s %s %.1f\n", b1.name, b1.author, b1.price);
	printf("%s %s %.1f\n", b2.name, b2.author, b2.price);
	return 0;
}

到这里,C语言的操作符我们就基本学完了。文章来源地址https://www.toymoban.com/news/detail-449123.html

到了这里,关于C语言——操作符详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • C语言:“~”操作符详解

    ~:含义及用法举例 文章目录 前言 一、“~”是什么? 二、原码、反码及补码 1.简介 2.用法举例 ①正整数 ②负整数 ③零 三、“~”操作符 1.简介 2.用法举例 ①正整数 ②负整数 ③零 本文在简单介绍原码反码补码的基础上,介绍“~”操作符的用法。 ~:一种单目操作符,即对

    2024年02月10日
    浏览(13)
  • 【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

    【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

    目录 一、^ 是什么(^称为异或) 二、^的规律(特点) 三、可利用^秒杀的常见例题(重点) 1、消失的数字  2、不一样的人生密码 3、交换两个数(不能创建中间变量) 4、找出只出现一个的两个数字 是一种操作符, 针对二进制异或而言的 ,两个数对应的二进制位相同,异或

    2024年02月16日
    浏览(9)
  • c语言:操作符详解(上)

    c语言:操作符详解(上)

    算术操作符: + 、- 、* 、/ 、% 移位操作符: 位操作符: | ^ 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、= 、= 、= 、|= 、^= 单目操作符: !、++、–、、*、+、-、~ 、sizeof、(类型) 关系操作符: 、= 、 、= 、 == 、 != 逻辑操作符: 、|| 条件操作符:? : 逗号表达式: , 下标引用:

    2024年03月16日
    浏览(9)
  • 【 c 语言 】赋值操作符详解

    【 c 语言 】赋值操作符详解

    🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 引言: 在C语言编程中,赋值操作符是我们日常编程中不可或缺的一部分。它不仅是初始化变量、修改

    2024年04月09日
    浏览(18)
  • C语言操作符详解(下)

    C语言操作符详解(下)

    在C语言操作符详解(上)中,已经详细系统的介绍了各种操作符及其使用场景。 接下来,本文将逐步介绍编译器执行这些代码背后所做的事情、操作符优先级、结合性以及求值顺序! 表达式求值的顺序一部分是由 操作符的优先级和结合性决定。 同样,有些表达式的操作数在

    2024年02月05日
    浏览(8)
  • 初阶C语言-操作符详解(上)

    初阶C语言-操作符详解(上)

    “不飞则已,一飞冲天;不鸣则已,一鸣惊人。” 今天,我们一起来学习一下操作符的相关知识。 算术操作符 + - * / % 移位操作符 位操作符 | ^ 赋值操作符 = += -= *= /=... 单目操作符 ! sizeof ++ -- ... 关系操作符 = = == != 逻辑操作符 || 条件操作符 ? : 逗号表达式 , 下标引用、函数

    2024年02月13日
    浏览(11)
  • 爱上C语言:操作符详解(上)

    爱上C语言:操作符详解(上)

    🚀 作者:阿辉不一般 🚀 你说呢: 生活本来沉闷,但跑起来就有风 🚀 专栏:爱上C语言 🚀 作图工具:draw.io ( 免费开源的作图网站) 如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持博主,如有不足还请指点,博主及时改正,感谢大家支持!!! 大家好啊😉!今

    2024年02月04日
    浏览(6)
  • 初阶C语言-操作符详解(下)

    初阶C语言-操作符详解(下)

    🌞 “等春风得意,等时间嘉许!” 接下来,我们把操作符没学完的继续学完! 📖我们来看一下下面这段代码: 关系操作符: = = !=(用于测试不相等) ==(用于测试相等) 注:不要把 == 和 = 混起来❗ ✅ == 用于测试相等, = 用于赋值。 📖逻辑操作符: (逻辑与操作符)

    2024年02月13日
    浏览(9)
  • C语言最全操作符详解✌️

    C语言最全操作符详解✌️

    C语言的一系列操作符中,其中一组叫双目操作符,也叫算数操作符。分别是:+,–,*,/,%。 ①+和– +和–的用途与数学中基本一致,用来做加法和减法。例如: 我们可以发现,他们之所以叫双目操作符,是因为他们的左边和右边一共有两个操作数。 ②* *运算符也与数学

    2024年02月21日
    浏览(6)
  • 初阶C语言——详解操作符(1)

    初阶C语言——详解操作符(1)

    Hello,我们又见面了,最近不知道大家是否在持续输出代码呢?代码能力是否提高了呢?今天让我们来一起学习操作符,操作符在我们学习语言中很重要,我们要知道每个操作符的作用和用法,下面开始我们的学习。 操作符分类: 算术操作符 移位操作符 位操作符 赋值操作符

    2024年02月12日
    浏览(5)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包