c语言操作符(下)
创始人
2024-05-10 15:47:48
0

前言

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏: 🍔🍟🌯 c语言初阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:
讲解c语言中有关操作符的知识.
金句分享:

✨✨✨行程万里,初心如一。✨✨✨

目录

  • 前言
  • 一、关系操作符
  • 二、逻辑操作符
  • 三、条件操作符:'?'
  • 四、逗号表达式
  • 五、其余操作符
    • 1)下标引用操作符
    • 2)函数调用操作符

一、关系操作符

关系操作符包括以下几种:

>	判断大于
>=
<
<=
!=		用于测试“不相等”
==		用于测试“相等”

关系操作符的返回结果只有两种,‘真’或’假’.
常见使用错误:
在实际编程中,关系运算符‘==’(判断相等)经常错写为‘=’(赋值),导致错误的出现,
并且错误还很难找到原因,因为这种错误编译器并不会报错.

🌰栗子

//错误示范
#include 
int main()
{int a = 3;if (a = 6){printf("开心每一天!!!");}return 0;
}

运行结果是:

开心每一天!!!

结果分析,a = 6是将6的值赋给a,所以表达式的结果为’’,则执行打印语句.

修正方法:养成良好的编程习惯

#include 
int main()
{int a = 3;if (6 = a)//将变量方到右边{printf("开心每一天!!!");}return 0;
}

运行结果:

编译错误,
1.表达式必须是可修改的左值"="
2.左操作数必须为左值

将变量放到右边进行判断,会很好的避免这类问题.

二、逻辑操作符

&&     逻辑与
||     逻辑或

首先,我们应该要将它们与‘&’(按位与)‘|’(按位或)区分开.
‘&&’(逻辑与):表示操作符两边的操作符都为’’是才为’’,否则都为’’.
‘| |’ (逻辑或):只要有一个为’’,则为’’,否则都为’’.
并不是对二进制位进行运算.

#include //区分区分逻辑与和按位与区分逻辑或和按位或
int main()
{int a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0;a1 = 1 & 0;a2 = 1 && 0;a3 = 1 & 2;a4 = 1 && 2;a5 = 1 | 2;a6 = 1 || 2;printf("%d\n", a1);//1 & 0printf("%d\n\n", a2);//1 && 0printf("%d\n", a3);//1 & 2printf("%d\n\n", a4);//1 && 2printf("%d\n", a5);//1 | 2printf("%d\n", a6);//1 || 2return 0;
}

运行结果:

0
00
13
1

除此之外,还要了解的是,‘&&’(逻辑与)‘| |’ (逻辑或)的运算规则.

重点来了::!!!

建议仔细观察下段代码:试着写出运行结果

#include 
int main()
{int a = 0, b = 1, c = 2, d = 3;a++ && ++b && d++;printf("变化1:\n a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d);a = 0, b = 1, c = 2, d = 3;//重新赋值为原来的值++a && ++b && d++;printf("变化2:\n a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d);a = 0, b = 1, c = 2, d = 3;//重新赋值为原来的值a++||++b||d++;printf("变化3:\n a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d);return 0;
}

在这里插入图片描述
运行结果:

变化1:a = 1b = 1c = 2d = 3
变化2:a = 1b = 2c = 2d = 4
变化3:a = 1b = 2c = 2d = 3

原因分析:

变化1分析:
a++是后置++,所以表达式a++在使用时是0,故表达式左边结果为假,即整个
a++ && ++b && d++;语句为假,不执行后面的++b和d++操作.
最后:a自增1(后置++),故结果为,a+1=1,b,c,d值不变.

变化2分析:
++a是前置++,所以a是先自增1再使用,故表达式a++的结果为真,
则继续执行表达式++b,同样为真,继续执行表达式d++.
最终:a+1;b+1,d+1,c不变;

变化3分析:
同样a++是后置++,所以表达式a++在使用时是0,故表达式左边结果为假,
但是逻辑与会继续执行表达式++b,则表达式++b的结果为真,则整个表达式
a++||++b||d++;的结果为真,并不会继续执行d++.
最终:a+1,b+1,d和c不变.
图解:

本题总结:电脑很懒,当足以判断整个表达式结果的时候,后面的剩余表达式将不会执行,如

1):'&&'逻辑与一边为假,则整个为假,
2):'||'  逻辑或一边为真,则整个为真

这种现象在有的书中被称为"短路"现象.

三、条件操作符:‘?’

条件操作符?,通常也被称之为三目运算符,即操作数有3个.
一般用法:

表达式 ?  语句1:语句2;

当表达式结果为’’时,执行语句1,表达式结果为’’时,执行语句2.

🌰栗子
当我们比较两个数的值的时候,通常使用if语句判断:

#include 
int main()
{int a = 0, b = 0;printf("请输入两个数:");scanf("%d%d", &a, &b);if (a > b){printf("这两个数中%d更大", a);}else printf("这两个数中%d更大", b);return 0;
}

其实我们可以转换为较为简单的写法,条件表达式写法:

#include 
int main()
{int a = 0, b = 0;printf("请输入两个数:");scanf("%d%d", &a, &b);a > b ? printf("这两个数中%d更大", a) : printf("这两个数中%d更大", b);return 0;
}

四、逗号表达式

使用方法:

表达式1,表达式2,表达式3……

逗号表达式的意思就是用逗号隔开的多个表达式。
运算规则:
从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

实例:
通过观察执行逗号表达式之后,各变量的变化,了解逗号表达式的用法和运算规则.

#include 
int main()
{int x = 0, a = 1, b = 2, c = 3, d = 5;x = (a++, b + 2, c += 2, a + d);printf("x=%d\n", x);printf("a=%d,b=%d,c=%d,d=%d", a, b, c, d);return 0;
}

在这里插入图片描述

运行结果:

x=7
a=2,b=2,c=5,d=5

结果分析:
因为逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
所以a++会执行使得,a+1,
b+2虽然也被执行了,但是并没有重新赋值给b,所以只是进行了简单计算,并没有进行赋值操作,所以b没有变化,
c+=2执行后c被重新赋值了,所以c+2
最后:x=a+d=2+5=7;

灵活运用逗号表达式:
逗号表达式实际使用时的妙处:

#include 
int main()
{int a = 3, b = 5, c = 0;b=dispose1(a);//函数处理1c=dispose2(b);//函数处理2while (c > 0){//这里是一段业务处理b = dispose1(a);//函数处理1c = dispose2(b);//函数处理2}return 0;
}

改为逗号表达式之后:

#include 
int main()
{int a = 3, b = 5, c = 0;while (b = dispose1(a), c = dispose2(b),c > 0){//这里是一段业务处理}return 0;
}

五、其余操作符

1)下标引用操作符

还记得数组吗?
我们对数组进行访问的时候就会使用这个操作符.
使用方法: 数组名[操作数]
数组的回忆

2)函数调用操作符

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

函数名(参数1,参数……)

🌰栗子

int sum(int x, int y)//创建求和函数
{return x + y;
}#include 
int main()
{int a = 2, b = 3;int c=sum(a, b);//调用求和函数,a,b为函数参数printf("%d", c);return 0;
}

结构体的内容后面会详细介绍,目前了解一下,认识一下即可.
结构体成员访问操作符, 访问一个结构体的成员

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

🌰栗子

struct classmate//创建一个结构体变量
{char name[10];//姓名char sex[5];//性别int age;//年龄double stature;//身高
};
#include 
int main()
{struct classmate c1 = { "初阶牛","男","19",1.75 };//初始化结构体变量printf("姓名:%s\n", c1.name);//使用结构体访问操作符'.'struct classmate* c = &c1;printf("性别:%s\n", c->sex);//使用结构体访问操作符'->'c->stature = 1.88;//修改身高printf("身高:%.3lf", c->stature);return 0;
}

关于操作符,还有一点知识在这一篇文章中有介绍
隐式转换

好了,c语言中,有关操作符的知识就讲到这里了.希望对大家有所帮助.
最后,小伙伴们的点赞就是给牛牛最大的支持,能不能给牛牛来一个一键三连呢?谢谢支持。

相关内容

热门资讯

宋城一日游【最新6篇】 宋城一日游 篇一宋城是中国江苏省苏州市的一座主题公园,以还原宋朝时期的建筑和文化而闻名。作为一个历史...
买飞轮斗士记初一作文【实用5... 买飞轮斗士记初一作文 篇一我是一个初一学生,最近我买了一本《飞轮斗士记》的漫画,让我非常兴奋和激动。...
雨的作文初三的700字【实用... 雨的作文初三的700字 篇一雨中的舞蹈初夏的午后,天空乌云密布,一场暴雨突然来临。雨点密集而有力地敲...
可以为你初一作文(推荐6篇) 可以为你初一作文 篇一我的暑假生活暑假终于来了,这是我初中生涯的第一个暑假。我非常期待这个假期,因为...
思考的乐趣初中作文(优选5篇... 思考的乐趣初中作文 篇一思考是一种极为有趣的活动。它能够让我们更深入地了解问题的本质,培养我们的逻辑...
冲动是魔鬼初中作文600字(... 冲动是魔鬼初中作文600字 篇一冲动是魔鬼冲动是一种无法控制的情绪和冲动行为,常常会给我们带来不良后...
山洞探险的初一作文500字【... 山洞探险的初一作文500字 篇一 山洞探险的初一作文500字 篇二山洞探险的初一作文500字 篇三 ...
初一作文未来【精彩6篇】 初一作文未来 篇一:未来的太空探索未来,随着科技的不断进步,人类对太空的探索将会取得巨大的突破。我们...
初中毕业的作文600字【优质... 初中毕业的作文600字 篇一初中毕业的感悟初中三年的时光转瞬即逝,仿佛昨天还是一个胆小怯懦的小学生,...
初中话题作文:战争与和平40... 初中话题作文:战争与和平400字 篇一战争与和平战争是人类社会发展中最为残酷的一种方式,它带来的破坏...
我的似水年华初中作文800字... 我的似水年华初中作文800字 篇一初中时光如流水般匆匆而过,留下了我许多美好的回忆。回想起这段时光,...
师生情初一作文800字(通用... 师生情初一作文800字 篇一初中生活中,师生情是一种特殊而珍贵的情感。在我初一的这一年里,我深深地感...
初中成长作文【精选6篇】 初中成长作文 篇一: 从失败中成长初中生活对于我来说是一个充满挑战和机遇的阶段。在这个阶段,我经历了...
春节拜年的作文400字(精彩... 春节拜年的作文400字 篇一春节拜年,是中国传统文化中一项重要的习俗。每年农历正月初一,人们会亲朋好...
我的母亲(精彩4篇) 我的母亲 篇一我的母亲,是我生命中最重要的人。她是一位勤劳、善良而又坚强的女性。在我成长的过程中,她...
初中想象作文:外面的世界真精... 初中想象作文:外面的世界真精彩 篇一我站在窗前,看着外面的世界,不禁感叹:外面的世界真精彩!我想象着...
春天初一作文【经典6篇】 春天初一作文 篇一春天初一作文 春天初一作文 篇二春天的美丽景色春天初一作文 篇一春天初一作文春天终...
真情无价初中优秀作文(推荐3... 真情无价初中优秀作文 篇一真情无价真情无价,是人类最美好的情感之一。它是一种无私奉献、无条件付出的真...
我最敬佩的人——环卫工人(精... 我最敬佩的人——环卫工人 篇一环卫工人是我最敬佩的人,他们默默无闻地工作,为城市的清洁和卫生付出了巨...
这不是爱情是感恩初中作文(最... 这不是爱情是感恩初中作文 篇一我们常常在电影、小说中看到爱情的美好,而对于初中生来说,爱情似乎是离我...