运算符详解(c语言)

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

引言:
hello,大家好!我是心跳sy,今天给大家分享c语言运算符详解,我们知道,c语言的一个显著特点就是表达式的应用,表达式是表示如何计算值的公式,而运算符又是构建表达式的基本工具,c语言拥有非常丰富的运算符,包括算术运算符、关系运算符、逻辑运算符、赋值运算符、位操作运算符、自增自减运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符、强制类型转换运算符和特殊运算符。本文对每个运算符都进行了非常详细的解释,我们一起来看看吧~!!

1、算术运算符(包括+,-,*,/,%)

·1. 算术运算符是包括c语言在内的多种编程语言中广泛应用的一种运算符,这类运算符可以执行加法、减法、乘法、除法以及求余。
·2. 加法类和乘法类运算符都属于二元运算符,需要两个操作数,一元运算符只需要一个操作数:i=+1; i=-1; (通常+什么都不做)
*3.需要注意的是除了%运算符外,其他二元算术运算符既允许操作数是整数,也允许操作数是浮点数,两者混合也是可以的。取余运算符%要求操作数是整数,如果两个数有一个不是整数,编译无法通过。
*4.运算符‘/’当两个操作数都是整数时,运算符‘/’会丢掉分数部分来截取结果。因此1/2的结果是0而不是0.5。

//当int型操作数和float型操作数混合在一起时,运算结果是float型的
	int a = 7;
	float b = 3.5;
	printf("%f\n", a + b);
	printf("%f\n", a/b);

c语言运算符解析,c语言,开发语言,算法

2、关系运算符(包括>,<,==,>=,<=,!=)

·1. c语言表达式产生的结果是0(假)或1(真),例如3<5表达式的值为1,而3>5的值为0;关系运算符同样适用于比较浮点数,也允许比较混合型操作数,如:1<2.5的值为1;
·2. 关系运算符的优先级低于算术运算符,例如:表达式 i+j<k-1的意思是(i+j)<(k-1).关系运算符是左结合性的。
*3.注意:i<j<k在c语言中是合法的,但该表达式不是测试j是否位于i和k之间(正确表达式:i<j&&j<k),因为<运算符是左结合的,所以表达式等价于(i<j)<k,换句话说是先检测i是否小于j,然后用比较产生的结果(1或0)来和k进行比较。
*4.注意:“等于”是两个紧邻的=,而不是一个=,值得注意的是,==和!=运算符的优先级低于大于小于等关系运算符。

c语言运算符解析,c语言,开发语言,算法

3、逻辑运算符(!,&&,||)

·1. !,&&,||分别是逻辑非、逻辑与、逻辑或(其中 !是一元运算符,&&、||是二元运算符)逻辑运算符产生的结果是0或1,将任何非零值操作数作为真值来处理,将任何零值作为假值来处理规则如下:
·2.如果表达式的值为0,那么!表达式 的结果为1;
·3.如果 表达式1表达式2 的值都是非零值,那么 表达式1&&表达式2 的结果为1;
·4.如果 表达式1表达式2 的值中任意一个是(或者都是)非零值,那么 表达式1||表达式2 的结果为1。
*5.运算符&&和||都对操作数进行“短路”计算,先计算出左值,再计算右值,如果表达式的值可以仅由左操作数的值推导出来,则不用计算右值;例如:(i != 0)&& (i/j> 0),如果i不等于零,则计算右值,如果i等于零,就不需要计算了
*6.运算符!是右结合的,&&和||为左结合的。

c语言运算符解析,c语言,开发语言,算法

4、赋值运算符(=,+=,-=,*=,/=,%=,&=,|=,^=,>>=,<<=)

·1.表达式 a=b(b可以是常量、变量或更复杂的表达式);如果a和b的类型不同,那么赋值运算发生时会把b的值转换为a的类型。
例如:int i = 0;
i = 6.66f //此时 i 为6。
·2.赋值运算符可以多个赋值进行串联,例如:i = j = k = 0;
·3.运算符 = 是右结合的,因此上述表达式等价于i =(j =(k = 0));
·4.赋值运算符要求它的左操作数为左值,左值表示对象,而不是常量或计算的结果,变量是左值,而10或 2*i 这样的表达式不是左值。
·5.复合赋值:i += 2;等价于i = i + 2;

5、位操作运算符(<<,>>,~,&,^,|)

·1.移位运算符包括左移位(<<)和右移位(>>),它可以将整数的二进制位进行左移右移,它们的操作数可以是任意整数类型(包括char),移位运算符对两个操作数都会进行整数提升,返回值类型是左操作数提升后的类型。
·2.i << j的值是将 i 中的二进制位左移j位后的结果,每次从 i 的最左端溢出一位,在 i 的最右端补一个0位;i >> j的值是将 i 中的二进制位右移 j 位后的结果。
·3.需要注意的是右移操作符分为算术右移和逻辑右移两种,算术右移:右边舍去,左边补原符号位,原符号位为0就补0,为1就补1;逻辑右移:右边舍去,左边直接补0.
·4.移位操作符优先级比算术运算符优先级低,i << 2+1等价于i <<(2+1)
·5.~,&,^,|分别为按位取反、按位与、按位异或、按位或。其中 ~是一元运算符,其他为二元运算符, ~是对操作数每一位取反,即将每一个1替换为0,将0替换为1;&对两个操作数相应的位执行逻辑与运算,运算符^和|相似(都是对两个操作数执行逻辑或运算),不同的是,当两个操作数的为都是1时, ^产生0而|产生1。

c语言运算符解析,c语言,开发语言,算法
c语言运算符解析,c语言,开发语言,算法

6、自增自减运算符(++,- -)

·“自增”(加1)“自减”(减1),++,- -运算符既可以作为前缀(++i,- -i),也可以作为后缀(i++,i- -),前缀是在使用之前就自增1,后缀是先使用完后增1

    int i = 1;
	printf("i is %d\n", ++i);
	printf("i is %d\n", i);
	int j = 1;
	printf("j is %d\n", j++);
	printf("j is %d\n", j);

c语言运算符解析,c语言,开发语言,算法

7、条件运算符( ?:)

· 条件表达式:表达式1表达式2表达式3,它是c语言运算符唯一一个三目运算符。这个表达式可以解释为:如果表达式1成立,那么执行表达式2,否则执行表达式3
*注意:除赋值运算符以外,条件运算符的优先级低于其他所有运算符。

8、逗号运算符( ,,)

·1.逗号表达式:表达式1表达式2,逗号表达式的值要通过两步实现,第一步,计算表达式1的值,第二步,计算表达式2的值,把这个值作为整个表达式的值。
·2. 需要注意的是,表达式1的值并不是完全抛弃,如果表达式1的结果对表达式2有影响,那么其值仍然起作用,只是最终值为表达式2的值。

9、指针运算符(&,*)

·1.如果要找到变量的地址,可以使用 &(取地址运算符),如果x是变量,那么&x就是x在内存中的地址。为了获得对指针所指向对象的访问,可以使用 *(间接寻址运算符),如果p是指针,*p则表示p当前指向的对象。
·2.在初始化指针变量时,使用&运算符把某个变量的地址赋给它。例如:

    int i,j, * p;//方法一
	p = &i;
	int* pa = &j;//方法二

· 而一旦指针变量指向了对象,就可以使用*运算符访问存储在对象中的内容。例如,如果p指向 i,那么可以显示出 i 的值,例如:

printf("%d\n", *p)

10、求字节数运算符(sizeof运算符)

·1.sizeof 表达式:sizeof(类型名),sizeof 运算符允许程序获取储存指定类型的值所需要的空间,其值是一个无符号整数,代表存储属于 类型名 的值所需要的字节数。表达式sizeof(char)的值为1,编译器本身通常就能够确定 sizeof 表达式的值。
·2.显示 sizeof 值时要注意,sizeof 表达式的类型为 size_t,size_t一定是无符号整形,C99中 printf 可以直接显示出 size_t 的类型值而不需要强制转换。

printf("Size of int:%zd", sizeof(int));//输出:Size of int:4

11、强制类型转换运算符((类型名))

· c语言把(类型名)视为一元运算符,一元运算符的优先级高于二元运算符,(unsigned int)time(NULL),(unsigned int)即为强制类型转换。

12、特殊运算符([ ],——>,. ,())

·1.[ ]是数组下标索引运算符,可以获取数组中单独的元素,下表运算符需要两个操作数,一个操作数是数组名称,另一个是一个整数。
·2.——>运算符和 . 运算符在结构体访问成员变量时经常用到。当Print函数中传入对象b的地址,print函数实现时用结构体指针接收,打印时用——>指向成员变量。当不传入地址时,也可以直接用成员访问操作符 . 来访问。
·3.函数名(形参表),它最少需要1个操作数,函数名称,参数列表可以根据用户需求进行设置。

struct Student
{
	char name[20];
	int age;
};
void Print(struct Student* pb)
{
	printf("%s %d\n", pb->name, pb->age);
}
int main()
{
	struct Student b = {"小明", 20};
	printf("%s %d\n", b.name, b.age);
	Print(&b);
	return 0;
}

13、附:操作符优先级表

c语言运算符解析,c语言,开发语言,算法
感谢各位友友们阅读,欢迎各位大佬在评论区留言哦~!!!
c语言运算符解析,c语言,开发语言,算法文章来源地址https://www.toymoban.com/news/detail-659825.html

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

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

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

相关文章

  • [开发语言][C++]:递增递减运算符

    递增运算符和递减运算符为对象的+1和-1提供了简洁的书写形式。 自增自减运算符的应用: 这两个运算符除了应用在算术运算,还可应用于迭代器,因为很多迭代器并不支持算术运算。 递增和递减运算符有两种书写形式:前置版本和后置版本。 前置版本 ++i --i :首先将运算

    2024年01月25日
    浏览(34)
  • C语言操作符详解+运算符优先级表格

       目录  前言 一、操作符是什么? 二、操作符的分类 三、算术操作符 四、逻辑操作符 五、比较操作符 六、位操作符 七、赋值操作符 八、其他操作符  九、运算符优先级表格 总结 在编写程序时,最常用到的就是操作符,本文将详细的介绍我们在编写程序时需要用到的操

    2024年01月18日
    浏览(37)
  • 【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

    目录 C语言中六种位运算符: 一、位移运算符 1、移位运算符简介 2、先要了解一点 3、 左移运算符 4、右移运算符 5、警告 二、 1、 按位与 2、| 按位或 3、^ 按位异或 4、~ 取反 4、例子  按位与 | 按位或 ^ 按位异或 ~取反 右移 左移 位运算符用来对二进制位进行操作,C语言中

    2024年02月06日
    浏览(25)
  • Linux C语言开发(三)运算符和表达式

    目录 一.什么是运算符 二.什么是表达式     在C语言中,运算符是用于执行特定操作的符号。这些操作可以涉及一个或多个值(称为操作数),并产生一个新的值或效果。C语言提供了多种类型的运算符,用于执行 算术、比较、逻辑和其他类型 的操作。     以下是C语言中常

    2024年01月20日
    浏览(49)
  • 【Java探索之旅】运算符解析 算术运算符,关系运算符

    🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! Java中运算符是非常重要的概念,它们用于对变量进行操作和比较,是实现各种算法和逻辑的基础。本文将介绍Java中的算术运算符和关系运算符,解释它们的基本用法和注意事项,帮助读者更

    2024年03月15日
    浏览(40)
  • Python教程(13)——Python运算符详解|算术运算符|比较运算符|逻辑运算符|位运算符

    Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比较、逻辑和其他类型的运算。我们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运算符,有算术运算符,比较运算符,赋值运算符,逻辑运算符,位算符等等。 算术运算

    2024年02月09日
    浏览(40)
  • 【C++】详解运算符重载,赋值运算符重载,++运算符重载

    目录 前言 运算符重载 概念 目的 写法 调用 注意事项 详解注意事项 运算符重载成全局性的弊端 类中隐含的this指针 赋值运算符重载 赋值运算符重载格式 注意点 明晰赋值运算符重载函数的调用 连续赋值 传引用与传值返回 默认赋值运算符重载 前置++和后置++重载 先梳理一下

    2024年04月25日
    浏览(56)
  • kotlin 运算符重载解析

    反编译之后的java代码为: 可以看到实际是生成了一个 plus方法, 然后我们把我们的plus1方法名称修改为plus ,编译报错,提示有2个同名方法。 完美 。

    2024年02月15日
    浏览(34)
  • MySQL-运算符的使用解析

    MySQL支持各种类型的运算符,这些运算符可以用于处理数字、日期和字符串等不同类型的数据。 MySQL支持各种类型的运算符,这些运算符可以用于处理数字、日期和字符串等不同类型的数据。以下是一些MySQL支持的常用运算符: 算术运算符 :加号(+)、减号(-)、乘号(*)

    2023年04月25日
    浏览(34)
  • Java运算符作用及解析

    Java运算符是对变量或者常量进行操作的符号。以下是Java中常见运算符的解析: 赋值运算符:如“=”,将右侧的值赋给左侧的变量。 一元运算符:如“+”“-”“!”,用于对变量进行操作。 算术运算符:如“+”“-”“*”“/”“%”,用于执行基本的数学运算。 比较运算符

    2024年01月18日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包