C语言——逗号表达式
一、基本知识
百度百科:“逗号表达式,是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。”
总结基本规则:
①逗号表达将两个及其以上的式子连接为一个表达式。
②逗号表达式按照从左向右的顺序计算每个子表达式的值
③逗号表达式的最后一个子表达式必须有返回值,因为整个表达式的值是最后一个子表达式的值。其余子表达式可以没有返回值。
二、示例演示
1.示例一
int main()
{int a = (1 * 2, 2 * 3, 3 * 4);//逗号表达式 a=12printf("a的值为:%d\n", a);int b[2][2] = { (1,2),(2,3),(3,4),(4,5) };//逗号表达式,每个表达式的最后一个值为数组b的元素。printf("数组b的值为:\n");for (int i = 0; i < 2; i++){for (int j = 0; j < 2; j++){printf("%-4d", b[i][j]);}printf("\n");}return 0;
}
运行结果:
2.示例二
代码①
int main()
{int x = 0, y = 0, z = 0;z = x++, y++, ++y;printf("%d,%d,%d\n", x, y, z);return 0;
}
对于x和y来说,很容易,x自增1次,y自增2次,所以最后x是1,y是2。主要就是z,注意这里跟运算符优先级有关,’,'的优先级比=的优先级低,所以其实是(z=x++),y++,z++;所以z的值为0。
运算结果:
代码②
修改后的代码:
int main()
{int x = 0, y = 0, z = 0;z = (x++, y++, ++y);printf("%d,%d,%d\n", x, y, z);return 0;
}
这样就先执行逗号表达式了,逗号表达式中的子表达式从左向右执行,所以最后++y值是2。所以z=2。
运算结果:
代码③
如果把逗号表达式中的++y转换成y++呢?
int main()
{int x = 0, y = 0, z = 0;z = (x++, y++, y++);printf("%d,%d,%d\n", x, y, z);return 0;
}
注意,逗号表达式的值为最后一个子表达式的返回值。y++的返回值为 y自增1前的值,所以z=1(因为第二个子表达式y++执行完毕,完成了自增1,所以最后一个子表达式y++的时候,y就已经是1了)。
运算结果:
C语言——逗号表达式相关推荐
- C语言逗号表达式 - C语言零基础入门教程
目录 一.C 语言逗号表达式简介 1.逗号表达式书写形式 2.逗号表达式计算结果 二.C 语言逗号表达式实战 1.逗号表达式的使用 2.逗号表达式与赋值表达式区别 三.猜你喜欢 零基础 C/C++ 学 ...
- c语言 逗号表达式,c语言逗号表达式的运算规则_后端开发
c语言程序的调试方法_后端开发 c语言程序的调试方法:1.先进行人工检查,即静态检查:2.在人工检查无误后,再上机调试:3.改正语法错误得到可执行目标程序,运行程序,看结果是否符合预期:4.不符合预期 ...
- c语言 逗号表达式的作用,关于c语言逗号表达式的运算规则知识点
c语言逗号表达式的运算规则 c语言逗号表达式是由左向右进行的:k=3*2=6,K+2=8,表达式返回8. 逗号表达式用法: 当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一 ...
- c语言 表示逗号的字符串,c语言逗号表达式的运算规则
c语言逗号表达式的运算规则 c语言逗号表达式是由左向右进行的:k=3*2=6,K+2=8,表达式返回8. 逗号表达式用法: 当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一 ...
- c语言逗号表达式(C语言逗号表达式可以出现自身吗)
C语言中逗号表达式的问题 逗号表达式的运算级最低,比赋值运算符级别还低. 所以 y=(x=a+b),(b+c); 先算x=a+b=6,再y=x=6:而后面的b+c不影响x和y的值. 所以最终x,y的值 ...
- C语言逗号表达式赋值、野指针成因、用户标识符、字符串赋值的几个概念
目录 题目 背景概念梳理 逗号表达式 野指针成因 用户标识符 字符串赋值 解题过程 正确答案 整体代码 参考链接 题目 一.输出x及a的结果 int main(){int x,a;x = (a=3, ...
- C语言逗号表达式在for循环语句中的使用
先直接举出逗号表达式一般的例题 #include <stdio.h> void main(){int a;printf("%d\n",(a=3*5,a*4,a+5)); ...
- qiu奇偶数c语言,C语言逗号表达式 .
(a=3*5,a*4).a+5 应该是 (a=3*5,a*4),a+5 吧 逗号表达式注意两个基本知识: 1. 逗号表达式的运算顺序是从左向右运算 2. 逗号表达式的值取逗号中最右表达式的值 现在看( ...
- c语言赋值一个字母,c语言赋值后面有逗号 c语言赋值与逗号表达式问题
C语言提供一种特殊放入运算符:逗号运算符 表达式1,表达式2 逗号表达式的分享解过程是: 先分享表达式1,再分享表达式2 整个逗号表达式的值是表达式2的值,如表达式"3+5,6+8" ...
最新文章
- wordpress导航页采用分类目录排序
- perl6 中将 字符串 转成十六进制
- Linux下sed命令替换配置文件中某个变量的值(改变包含字符的一行的值)
- TimeQuest学习总结
- java类作用域标识符_java入门 (二) 标识符、数据类型、类型转换、变量、常量、作用域...
- uni-ui介绍uni-api
- Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉
- 人人都是程序员的节奏,Python 纳入高考
- C++ 拷贝构造函数和赋值运算符
- 上传文件应注意的异常:FileUpLoad控件.
- Linux shell脚本详解及实战(五)——shell脚本函数
- Drupal 7.17 发布,专业的 CMS 内容管理系统
- 家里在计算机在线考试作弊,计算机在线考试系统能监考
- linux_oracle视频讲解百度云,Oracle免费视频课程2012版
- 软件测试面试问题总汇
- 【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置
- 微信小程序之点点考勤经验总结
- 基于机器学习的量化投资策略
- php珠心算源码,NOIP201401珠心算测验
- 手机卫星定位系统_为什么手机支持北斗导航,却不知道如何开启?