逗号表达式与赋值表达式

news2024/11/26 9:39:12

        逗号表达式和赋值表达式是C语言中常用的表达式类型。它们可以用于各种目的,包括计算和评估表达式、初始化变量、为函数调用提供参数以及将值分配给变量。 

逗号表达式

        逗号表达式允许在单个语句中计算和评估多个表达式。逗号分隔每个表达式,并且表达式从左到右依次执行。逗号表达式可以用于以下目的:

  1.  将多个表达式组合为一个语句。
  2.  初始化多个变量。
  3.  为函数调用提供多个参数。
  4.  将值分配给多个变量。

逗号表达式运算法则

  •  逗号表达式从左到右依次执行。
  •  逗号表达式中,每个表达式都独立计算和评估
  •  逗号表达式中,每个表达式的值都会被丢弃除了最右边的表达式
  •  逗号表达式的值是其最右边的表达式的值

以下是一些逗号表达式运算法则的示例: 

int i = 1, j = 2, k = 3; // 初始化三个变量
printf("%d, %d, %d\n", i, j, k); // 输出三个变量的值


  逗号表达式中,每个表达式都独立计算和评估: 

int a = (1 + 2), b = (3 + 4), c = (5 + 6); // 计算三个表达式的值   a=3,b=7,c=11


  逗号表达式中,每个表达式的值都会被丢弃,除了最右边的表达式:

int d = (1, 2, 3); // 逗号表达式中,只有最右边的表达式 3 的值会被保留,d最终等于3


逗号表达式的值是其最右边的表达式的值: 

int e = (1, 2 + 3, 4 * 5); // e 的值是 20

练习:

求下面代码的结果 :

#include <stdio.h>
int main()
{
    int arr[] = {1,2,(3,4),5};
    printf("%d\n", sizeof(arr));
    return 0;
} 

答案:16

分析:(3,4)逗号表达式,从左往右计算,表达式最终结果是4。sizeof计算数组大小(sizeof:https://blog.csdn.net/wait___wait/article/details/135184125?spm=1001.2014.3001.5502),单位字节,int类型字节为4,数组有4个元素,因此大小为4*4=16。

赋值表达式

        赋值表达式用于将值分配给变量。赋值运算符“=”用于将右边的值分配给左边的变量(操作符:赋值运算符https://blog.csdn.net/wait___wait/article/details/135242898)。赋值表达式可以用于以下目的:

  • 将常量或变量的值分配给变量。
  •  将函数调用的返回值分配给变量。
  •  将表达式计算的结果分配给变量。

以下是一些赋值表达式的示例:

int i = 1; // 将值 1 赋值给变量 i
i += 2; // 将值 2 加到变量 i 上,  i等于3,i+=2相当于i=i+2,是复合赋值

易混淆点        

 举例说明:

#include <stdio.h>
int main()
{
    int a, b, c;
    a = 5;
    c = ++a;
    b = ++c, c++, ++a, a++;

    b += a++ + c;
    printf("a = %d b = %d c = %d\n:", a, b, c);
    return 0;
} 

答案:a = 9 b= 23 c = 8 

答案解析:

++运算符:分为前置++和后置++(https://blog.csdn.net/wait___wait/article/details/135242898)

前置++:先加1,后使用,即先使用变量中内容,然后给结果加1

后置++:先使用变量中内容,整个表达式结束时,给变量加1

 c = ++a;// ++a:a+1,结果为6,加完之后的结果用来赋值给c,因此:a = 6 c = 6

b = ++c, c++, ++a, a++;
   // 逗号表达式的优先级最低,要想先执行可利用(),这里先算b=++c, b得到的是++c后的结果,b是7
   // b=++c 和后边的构成逗号表达式,相当于   (b=++c),c++, ++a, a++    依次从左向右计算的。
   // 表达式结束时,c++和,++a,a++会给a+2,给c加1,此时c:8,a:8,b:7

 b += a++ + c; // a先和c加,结果为16,在加上b的值7,b的结果为23,最后给a加1,a的值为9 

 练习:

#include<stdio.h>
int main()
{
    int a, b;
    b = (a = 1,a + 1, ++a);
    printf("a = %d b = %d", a, b);
    return 0;
} 

 先自己分析一下

答案:a = 2 b = 2

解析: b = (a = 1,a + 1, ++a)先执行逗号表达式再执行赋值表达式,逗号表达式的最终结果是a等于2,后a的值赋给b。


期待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1349761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gin 集成 prometheus 客户端实现注册和暴露指标

前言 当我们构建一个 Web 应用程序时&#xff0c;了解应用程序的性能和行为是非常重要的。Prometheus 是一个流行的开源监控系统&#xff0c;它提供了强大的指标收集和查询功能&#xff0c;可以帮助我们监控应用程序的各个方面。 在 Gin 中集成 Prometheus 可以让我们更方便地监…

Golang http包实战:构建RESTful API

Golang http包实战&#xff1a;构建RESTful API 引言简介目的 Go语言http包简介功能概述基本组件 搭建基础Web服务器步骤指导代码示例创建简单的HTTP文件服务器步骤说明代码示例 设计RESTful API结构设计原则路由设计 实现RESTful API处理请求代码示例 中间件应用代码示例 错误…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑用户禀赋效应和环保意识不确定性的微电网鲁棒优化调度方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到微电网系统的优化调度方法&#xff0c;特别考虑了两个重要方面&#xff1a;用户禀赋效应和环保意识的不确定性。以下是对标题中关键术语的解…

在升序的列表a中插入数值x插入后的列表仍然是升序的返回插入x后的整个列表插入操作使用二分查找方法bisect.insort_left(a, x)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 在升序的列表a中插入数值x 插入后的列表仍然是升序的 返回插入x后的整个列表 插入操作使用二分查找方法 bisect.insort_left(a, x) [太阳]选择题 请问以下代码输出的结果是&#xff1f; import…

Android ImageView的Bitmap在scaleType情况下Bitmap顶部与底部RectF坐标,Kotlin

Android ImageView的Bitmap在scaleType情况下&#xff0c;Bitmap顶部与底部RectF坐标&#xff0c;Kotlin 通常&#xff0c;在ImageView设置scaleType后&#xff0c;Android会把原始图片通过缩放放在ImageView里面&#xff0c;例如&#xff1a; <ImageViewandroid:id"id…

python多环境管理工具——pyenv-win安装与使用教程

目录 pyenv-win简介 pyenv-win安装 配置环境变量 pyenv的基本命令 pyenv安装py环境 pyenv安装遇到问题 pycharm测试 pyenv-win简介 什么是pyenv-win&#xff1a; 是一个在windows系统上管理python版本的工具。它是pyenv的windows版本&#xff0c;旨在提供类似于unix/li…

54.网游逆向分析与插件开发-游戏增加自动化助手接口-项目需求与需求拆解

内容来源于&#xff1a;易道云信息技术研究院VIP课 项目需求&#xff1a; 为游戏增加VIP功能-自动化助手。自动化助手做的是首先要说一下背景&#xff0c;对于授权游戏来讲它往往年限都比较老&#xff0c;老游戏和新游戏设计理念是不同的&#xff0c;比如说老游戏基本上在10年…

OpenCV-12绘制图像

OpenCV提供了许多绘制图像的API&#xff0c;可以在图像上绘制各种图形&#xff0c;例如直线&#xff0c;矩形&#xff0c;圆&#xff0c;椭圆等图形。 一、画直线 利用API line&#xff08;img, pt1, pt2, color, thickness, lineType, shift&#xff09;可以绘制直线。 其中…

ROS TF坐标变换 - 静态坐标变换

目录 一、静态坐标变换&#xff08;C实现&#xff09;二、静态坐标变换&#xff08;Python实现&#xff09; 如前文所属&#xff0c;ROS通过广播的形式告知各模块的位姿关系&#xff0c;接下来详述这一机制的代码实现。 模块间的位置关系有两种类型&#xff0c;一种是相对固定…

MODIS ET 蒸散发数据

MODIS ET 即 MOD16 系列产品&#xff0c;属于MODIS Level4 的产品。 在 LP DAAC - MODIS 上搜索了现存的 ET&#xff08;Evapotranspiration&#xff09; 数据&#xff1a; 建议使用最新版本Collection 6.1&#xff0c;也就是结尾是.061的数据集。 在 Collection 6.1 中&…

Vue:Vue与VueComponent的关系图

1.一个重要的内置关系&#xff1a;VueComponent.prototype.proto Vue.prototype 2.为什么要有这个关系&#xff1a;让组件实例对象&#xff08;vc&#xff09;可以访问到 Vue原型上的属性、方法。 案例证明&#xff1a; <!DOCTYPE html> <html lang"en"&…

TDD-LTE 附着流程和去附着流程

目录 1. 附着流程 1.1. 正常附着流程 2. 异常附着流程 2.1 RRC建立失败 2.2 核心网拒绝 2.3 eNodeB未收到初始化上下文建立请求 2.4 RRC重配置请求丢失 2. 去附着流程 2.1 非关机去附着流程 2.1.1 连接态非关机去附着 2.1.2 空闲态非关机去附着 2.2 关机去附着流程 …

小肥柴慢慢手写数据结构(C篇)(5-2 AVL树)

小肥柴慢慢学习数据结构笔记&#xff08;C篇&#xff09;&#xff08;5-2 AVL树 目录5-5 AVL出现的原因5-5-1 平衡树5-5-2 平衡二叉树的具体案例 5-6 AVL平衡策略的讨论5-7 不使用平衡因子的实现&#xff08;黑皮书&#xff0c;训练思维&#xff09;5-8 使用平衡因子的实现&…

Matplotlib_4.文字图例尽眉目

文章目录 一、Figure和Axes上的文本1.text2.title和set_title3.figtext和text4.suptitle5.xlabel和ylabel6.annotate7.字体的属性设置 二、Tick上的文本1.简单模式2.Tick Locators and Formatters 三、legend&#xff08;图例&#xff09; 一、Figure和Axes上的文本 Matplotli…

linux 的直接direct io

目录 什么是 Direct IO java 支持 使用场景 数据库 反思 在之前的文章零拷贝基础上&#xff0c;有一个针对那些不需要在操作系统的 page cache 里保存的情况&#xff0c;即绕过 page cache&#xff0c;对于 linux 提供了 direct io 的功能。 https://blog.csdn.net/zlpzl…

2024年第一天,先送一波福利!

▼最近直播超级多&#xff0c;预约保你有收获 近期直播&#xff1a;《LLM在电商搜索系统的应用案例实战》 —1— 2024 AIGC 技术体系领取福利 2023年是当之无愧的生成式 AI 元年&#xff0c;AIGC 的崛起深刻改变了我们的工作和生活&#xff0c;让我们看到了未来无限的可能性&am…

TDD-LTE 寻呼流程

目录 1. 寻呼成功流程 1.1 空闲态寻呼 1.2 连接态寻呼 2. 寻呼失败流程 2.1 Paging消息不可达 2.2 RRC建立失败 2.3 eNodeB未上发Initial UE message或达到超时 1. 寻呼成功流程 1.1 空闲态寻呼 寻呼成功&#xff1a;MME发起寻呼&#xff08;S1 接口发送Paing 消息&…

【漏洞复现】冰峰VPN存在敏感信息泄露漏洞

漏洞描述 冰峰VPN log/system.log模块日志信息泄露漏洞 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利…

大数据背景下基于联邦学习的小微企业信用风险评估研究

摘要&#xff1a; 小微企业信用风险评估难是制约其融资和发展的一个主要障碍。基于大数据的小微企业信用风险评估依然面临着单机构数据片面、跨机构数据共享难、模型不稳定等诸多挑战。针对相关问题和挑战&#xff0c;本项目拟在多主体所有权数据隐私保护与安全共享的背景下&am…

RainBond 构建组件 rbd-chaos 故障解决 【真实案例】

文章目录 背景分析官方排查说明尝试进一步分析解决参考背景 在 RainBond 中把所有组件都部署了至少 2 个实例后,开始出现构建/滚动更新直接报错,且没有日志(查看日志按钮点击后,里面啥也没有)。 然后再平台管理主界面,可以看到提示 rbd-chaos 组件故障: 分析 官方排…