C/C++ 中的逗号运算符
在C语言中逗号运算符可以将两个表达式连接起来
int n = 3+5, 6+ 10; // 此时 n = 16 ,
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1, 表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5, 6+ 10”的值为16。
例子 : a=3*5,a*4
, 注意重点 : 逗号运算符优先度最低,比赋值运算符低。
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4
” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5
”是一个赋值表达式”,“a*4
”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?
赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5
(也就是把“a=3*5
”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4
,得60。整个逗号表达式的值为60。
下面在将两个例子:
x = (a = 3, 6 * 3);
x = a = 3, 6 * a;
- 是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。
- 包括一个赋值表达式和一个算术表达式,x的值为3。
下面用一个程序看看
#include <iostream>using namespace std;int main(int argc, char** argv)
{int a = 1, b = 2, c = 3;cout << (a, b, c) << b << c << endl; // 323// 逗号运算符 优先级最小int x = (a = 3, 6 * 3);cout << x << endl; // 18return 0;
}
另外附上我的github仓库:https://github.com/acelj/Notes
分享关于C++基础知识,智能指针,内存四区, 数据结构和算法,linux, mysql,redis等等。
C/C++ 中的逗号运算符相关推荐
- JavaScript中的逗号运算符
JavaScript逗号运算符 阅读本文的前提,明确表达式.短语.运算符.运算数这几个概念. 所谓表达式,就是一个JavaScript的"短语",JavaScript解释器可以计 ...
- C语言中的逗号运算符
C语言中的逗号运算符 在C语言中逗号","也是一种运算符,称为逗号运算符. 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式.其一般形式为: 表达式1, 表达式 ...
- 在c语言中逗号的作用,关于c语言中的逗号运算符???
等下..答错了..还需要理解一下神马是逗号表达式..我前面说的和uuyyhhjj与delta_charlie的意思一样,但其实我们都搞错了.你可以自己把我们的例子都运行一下,看看是不是这样.下面我感觉 ...
- JS中的逗号运算符(,)
逗号运算符 逗号运算符是二元运算符,它能够先执行运算符左侧的操作数,然后再执行右侧的操作数,最后返回右侧操作数的值. 逗号表达式: 一般形式:表达式1,表达式2,表达式3,......表达式n 求解过 ...
- python中的逗号运算符_C++ 逗号运算符 | 菜鸟教程
C++ 逗号运算符 使用逗号运算符是为了把几个表达式放在一起. 整个逗号表达式的值为系列中最后一个表达式的值. 从本质上讲,逗号的作用是将一系列运算按顺序执行. 表达式1, 表达式2 求解过程是:先求 ...
- c语言中逗号自加,计算机二级自加、自减运算符和逗号运算符
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( ). A.k++ B.k+=1 C.++k D.k+1 参考答案: ...
- Java中逗号运算符的使用
今天看到一道面试题,题目如下: 题目解释: 上面有一个类,有四个成员属性,以及两个构造方法(一个四个参数,一个两个参数),题目给出四个选项,问哪些选项可以满足在在四个参数的构造方法中完成x=a,y=b ...
- C语言中的逗号的作用,C语言逗号运算符和逗号表达式基础总结
逗号运算符的作用: 1,起分隔符的作用: 定义变量用于分隔变量:int a,b 输入或输出时用于分隔输出表列 printf("%d%d",a,b) 2,用于逗号表达式的顺序运算符 ...
- 小括号在c语言的作用,C语言的小括号----其实是逗号运算符
比如下面的代码: #include void fun() { int a, b, c, d; a = (, b = ); c = (, ); d = (, ); printf("%d %d ...
最新文章
- 美团开源Logan Web:前端日志在Web端的实现
- Mysql与sqlite注意
- Magento利用input type=”file”上传图片
- shell 删除奇数偶数行
- VS2008(SP1)资源编译错误:fatal error RC1015: cannot open include file 'afxres.h'.
- javascript 在对象中使用 定时器_如何使用JavaScript 面向对象编程
- 2020 年最牛逼的 10 门编程语言,别在选错语言了
- 速领,阿里巴巴Java开发手册终极版
- String.Empty、string=”” 和null的区别
- 浅识Flutter 基本组件之showDatePicker方法
- Verilog学习笔记4:关于5M40ZE64C4N接地的问题
- 阿里大数据工程师面经
- 服务器时区不对微信支付报错,微信支付设置time_expire后提示【交易有效截止时间非法】问题...
- 查询数据库空间(mysql和oracle)
- 《算法竞赛入门经典(第2版)》——学习记录
- 泰勒公式求极限c语言switch,C语言利用泰勒公式构造求SIN(X),求大触帮看我的代码哪里有问题...
- 用Python爬取知乎上关于程序员的神回复
- 静止轨道卫星角度效应校正方法
- 十年如一日 倡领孝老敬老风尚
- UPS电源及电池内阻综合监控—电池组、单体电池电压、异常告警
热门文章
- MDI/MDIX/Auto-MDI/MDIX的解析大全
- java小球碰撞实验报告_实验五 Java网络编程及安全 实验报告 20135232王玥
- 计算机科学与技术审核评估专家,审核评估进行时|学校召开本科教学工作审核评估专家组见面会...
- vs编译运行闪退不用system(“pause”)方法
- 音频数据处理的基本框架(基于ADSP-SC589)
- 偏差(Bias)与方差(Variance)
- CV2 Sobel算子实现方法研究
- 1.输出长春地铁1号线运行图
- 智慧水务三维空间管理平台能够实现哪些功能?
- Openshift介绍及常用命令