一、基本知识

百度百科:“逗号表达式,是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语言——逗号表达式相关推荐

  1. C语言逗号表达式 - C语言零基础入门教程

    目录 一.C 语言逗号表达式简介 1.逗号表达式书写形式 2.逗号表达式计算结果 二.C 语言逗号表达式实战 1.逗号表达式的使用 2.逗号表达式与赋值表达式区别 三.猜你喜欢 零基础 C/C++ 学 ...

  2. c语言 逗号表达式,c语言逗号表达式的运算规则_后端开发

    c语言程序的调试方法_后端开发 c语言程序的调试方法:1.先进行人工检查,即静态检查:2.在人工检查无误后,再上机调试:3.改正语法错误得到可执行目标程序,运行程序,看结果是否符合预期:4.不符合预期 ...

  3. c语言 逗号表达式的作用,关于c语言逗号表达式的运算规则知识点

    c语言逗号表达式的运算规则 c语言逗号表达式是由左向右进行的:k=3*2=6,K+2=8,表达式返回8. 逗号表达式用法: 当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一 ...

  4. c语言 表示逗号的字符串,c语言逗号表达式的运算规则

    c语言逗号表达式的运算规则 c语言逗号表达式是由左向右进行的:k=3*2=6,K+2=8,表达式返回8. 逗号表达式用法: 当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一 ...

  5. c语言逗号表达式(C语言逗号表达式可以出现自身吗)

    C语言中逗号表达式的问题 逗号表达式的运算级最低,比赋值运算符级别还低. 所以 y=(x=a+b),(b+c); 先算x=a+b=6,再y=x=6:而后面的b+c不影响x和y的值. 所以最终x,y的值 ...

  6. C语言逗号表达式赋值、野指针成因、用户标识符、字符串赋值的几个概念

    目录 题目 背景概念梳理 逗号表达式 野指针成因 用户标识符 字符串赋值 解题过程 正确答案 整体代码 参考链接 题目 一.输出x及a的结果 int main(){int x,a;x = (a=3, ...

  7. C语言逗号表达式在for循环语句中的使用

    先直接举出逗号表达式一般的例题 #include <stdio.h> void main(){int a;printf("%d\n",(a=3*5,a*4,a+5)); ...

  8. qiu奇偶数c语言,C语言逗号表达式 .

    (a=3*5,a*4).a+5 应该是 (a=3*5,a*4),a+5 吧 逗号表达式注意两个基本知识: 1. 逗号表达式的运算顺序是从左向右运算 2. 逗号表达式的值取逗号中最右表达式的值 现在看( ...

  9. c语言赋值一个字母,c语言赋值后面有逗号 c语言赋值与逗号表达式问题

    C语言提供一种特殊放入运算符:逗号运算符 表达式1,表达式2 逗号表达式的分享解过程是: 先分享表达式1,再分享表达式2 整个逗号表达式的值是表达式2的值,如表达式"3+5,6+8" ...

最新文章

  1. wordpress导航页采用分类目录排序
  2. perl6 中将 字符串 转成十六进制
  3. Linux下sed命令替换配置文件中某个变量的值(改变包含字符的一行的值)
  4. TimeQuest学习总结
  5. java类作用域标识符_java入门 (二) 标识符、数据类型、类型转换、变量、常量、作用域...
  6. uni-ui介绍uni-api
  7. Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉
  8. 人人都是程序员的节奏,Python 纳入高考
  9. C++ 拷贝构造函数和赋值运算符
  10. 上传文件应注意的异常:FileUpLoad控件.
  11. Linux shell脚本详解及实战(五)——shell脚本函数
  12. Drupal 7.17 发布,专业的 CMS 内容管理系统
  13. 家里在计算机在线考试作弊,计算机在线考试系统能监考
  14. linux_oracle视频讲解百度云,Oracle免费视频课程2012版
  15. 软件测试面试问题总汇
  16. 【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置
  17. 微信小程序之点点考勤经验总结
  18. 基于机器学习的量化投资策略
  19. php珠心算源码,NOIP201401珠心算测验
  20. 手机卫星定位系统_为什么手机支持北斗导航,却不知道如何开启?

热门文章

  1. 4GB以上iso文件传输出坑指南
  2. 美团面试都面不过?我又不是去送外卖的!美团Java面试经历总结【一面、二面、三面】
  3. ORACLE的sign函数
  4. Java各种锁在工作中使用场景和细节经验总结
  5. 我在学习小程序之flex布局
  6. 创建一个简单的flask项目步骤
  7. 联合循环——29低压柜欠电压保护
  8. OCR字符识别技术总览
  9. 架构道术-架构师该如何做竟品分析
  10. 【WebGL编程指南】GLSL ES语法基础