C语言逗号运算符_c语言逗号运算符优先级最低

C语言逗号运算符_c语言逗号运算符优先级最低逗号也是运算符?是的,但是其实我更愿意说它是分隔符。在C语言中我们就经常使用逗号,看似逗号是非常平凡的分隔符,但是它关联到一个你必须知道但可能未曾思考的小知识:理论上,每条语句(分号结束),最终都会转换成一个值。例子1:#include<stdio.h>intmain(){ 3,4,5;//这是一条语句 //把上面这条语句的值赋值给变量a inta=(3,4,5); printf(“a=%d\n”,a);}输出结果:a=5因为a的值是整条语句的值,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

逗号也是运算符?

是的,但是其实我更愿意说它是分隔符。在C语言中我们就经常使用逗号,看似逗号是非常平凡的分隔符,但是它关联到一个你必须知道但可能未曾思考的小知识:
理论上,每条语句(分号结束),最终都会转换成一个值。

例子1:

#include <stdio.h>
int main()
{ 
   
	3, 4, 5;//这是一条语句
	//把上面这条语句的值赋值给变量a
	int a = (3, 4, 5);
	printf("a=%d\n", a);
}

输出结果:a=5
因为a的值是整条语句的值,而整条语句的值是最后那个逗号后面的值

Jetbrains全家桶1年46,售后保障稳定

例子2:

#include <stdio.h>
int main()
{ 
   
	int a=3, b=4, c=5;
	int x=0;
	int y=(x=a+b),(b+c);
	printf("第一个y=%d\n", y);
	y=((x=a+b),(b+c));
	printf("第二个y=%d\n", y);

}

输出结果:
		第一个y=7
		第一个y=9
第一个y的值你应该能看懂,就是逗号分隔开,使得y=x=a+b
第二个y其实就等于逗号后面的(b+c)的值!逗号前面那些似乎是多余的
那多余的东西为什么要写呢?请注意:逗号前面有个x的赋值语句,所以并不多余!
这样写的目的有21.简化代码:两句合成一句写.
2.让你理解一个句子就会像一个函数一样有返回值,如果用逗号隔开,
这个【返回值】就会变成最后那个表达式的值!

思考:逗号运算符让你明白什么道理?

道理:一条语句理论上是有返回值的,如果语句里面有多个逗号,则以最后一个逗号后面的表达式值为返回值!

//返回值是6,就像函数一样忽略返回值的写法:
1,2,3,4,5,6;

但是请注意区分,如上面的
y=(x=a+b),(b+c);和y=((x=a+b),(b+c));
仔细观察,你会发现:
前面是【忽略句子返回字】的,
后面是【用变量y存放返回值】的

*****************************************************************************************


*****************************************************************************************

时间充裕可以听我啰嗦:

后记:

使用过 kotlin 语言开发安卓(或其他)的小伙伴都知道,Kotlin语言的if语句是有返回值的,返回值就是 if 或该 if 对应的 else 里面的最后一条语句作为返回值。
但是请注意:Kotlin是可以省略分号的,所以你基本不能使用分号作为一个句子的结束,但是可以用关键词,行等间接判断一个句子的开始和结束!
下面给出if-else语句的一种写法:

fun myFun(a:Int,b:Int)=if(a>b) a else b

众所周知,Kotlin具有超强的类型匹配能力,所以其中隐含几个信息,
(这几个信息是你必须熟知类型匹配机制以后才容易理解的):
1.函数的返回值类型是Int,因为if-else的返回值是Int
2.函数的返回值是if-else的返回值

上面这行语句等价于:

fun myFun(a:Int,b:Int):Int{ 
   
	return if(a>b){ 
    a }
	else { 
    b }
}

上面这行语句等价于:

fun myFun(a:Int,b:Int):Int{ 
   
	if(a>b){ 
    return a }
	else { 
    return b }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215477.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • dataloader 源码_DataLoader

    dataloader 源码_DataLoaderimportpaddle.fluidasfluidimportnumpyasnpBATCH_NUM=10BATCH_SIZE=16EPOCH_NUM=4CLASS_NUM=10ITERABLE=True#whetherthecreatedDataLoaderobjectisiterableUSE_GPU=False#whethertous…

  • vue往数组中添加元素_vuejs给数组添加元素[通俗易懂]

    vue往数组中添加元素_vuejs给数组添加元素[通俗易懂]2016-09-13更新问题vuejs给数组添加元素代码是这样的:varvm=newVue({el:”#app”,data:{items:[{id:1,message:’Apple’,selected:false,num:1,price:5},{id:2,message:’Peach’,selected:true,num:1,price:10},{id:3,mes…

  • 机器学习模型评估的方法总结(回归、分类模型的评估)

    机器学习模型评估的方法总结(回归、分类模型的评估)建模的评估一般可以分为回归、分类和聚类的评估,本文主要介绍回归和分类的模型评估:一、回归模型的评估主要有以下方法:指标 描述 metrics方法 MeanAbsoluteError(MAE) 平均绝对误差 fromsklearn.metricsimportmean_absolute_error MeanSquareError(MSE) …

  • redis 乐观锁_jpa乐观锁

    redis 乐观锁_jpa乐观锁文章目录GeospatialHyperloglogBitmapsRedis事务悲观锁和乐观锁JedisSpringboot继承RedisGeospatial存储地理位置的数据结构应用场景朋友的定位,附近的人,打车距离计算Geospatial底层使用的是Zset127.0.0.1:6379> geoadd city 116.23 40.22 beijing 添加一个数据127.0.0.1:6379> geoadd city 121.47 31.23 shanghai 118.77

  • tabnine 激活码【2021免费激活】

    (tabnine 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~DB847YMYYZ-eyJsaWNlb…

  • TCP拥塞控制算法的演进

    TCP拥塞控制算法的演进TCP拥塞控制算法的演进TCP协议仅定义框架,也就是发送端和接收端需要遵循的“规则”。TCP协议的实现经过多年的改进,有了多个不同的版本。比较重要的有Tahoe、Reno、NewReno、SACK、Vegas等,有些已经成为了影响广泛的RFC文档,有些则成为了Unix/Linux操作系统的标准选项。以下简要介绍各个实现版本的主要区别和联系。1 早期的TCP实现最早的

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号