C语言:逗号表达式(辨析)
逗号表达式:是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,①从左往右逐个计算表达式,②整个表达式的值为最后一个表达式的值。
——百度百科
如果令x的初始值为1的话,++x与x++最终结果都是2,但在其过程中会有较大差异。(--x与x++同理)
在过程中:
++x是2(x位于++后是加完之后),过程中是2。
x++是1(x位于++前是加完之前),过程中是1。
我是这么记忆的,一下子就很有印象,但只有到真正去到题中实践理论,就会豁然开朗。
辨析一:
#include<stdio.h>
int main()
{int x=1,y=1,z=1;z=x++,y++,++y;printf("%d%d%d",x,y,z);return 0;
}
大家首先看一下,z的最终结果是什么呢?
对于刚接触逗号表达式的同学来说,小编当时依据上面的①②两点,流程大概如下
在z=x++,y++,++y;z等于整个逗号表达式最后的值吗!在这个过程中y的结果是2,那z也是2咯,
最后x=2,y=3,z=2。简简单单咯~但这是错的,实际输入,得出的结果如下
吃了个大惊,怎么z等于1呢,追回源头,在哪出现过1呢!原来在流程1中x的过程结果是1,嗯?z不是等于逗号表达式最后的值吗!?
其实此处是优先级还没明白!在z=x++,y++,++y;中z=x++含有赋值运算符,其优先级要高于逗号运算符。逗号运算符的优先级是最小。此处相当于(z=x++),y++,++y;
如果要实现我们所想要的结果则只需变成z=(x++,y++,++y);
代码如下,结果如下
辨析二:
#include<stdio.h>
int main()
{int z=1;printf("%d\n",(z+=1,z+5,z++));//printf("%d",z);return 0;
}
大家还是看一下,z的最终结果是什么呢?
大家看一下下面流程思路正确吗?
理论实践
吃惊+1,怎么跟我预想的相差5呢!
此处的z+5,并没有什么实际意义,并不是z+=5!其它的就是大致相同了。
那小伙伴知道z最后的结果吗?
#include<stdio.h>
int main()
{int z=1;printf("%d\t",(z+=1,z+5,z++));printf("%d",z);return 0;
}
赶快理论实践吧!
希望对你有帮助,语言学习贵在坚持输入和输出!
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语言——逗号表达式
一.基本知识 百度百科:"逗号表达式,是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值." 总结基本 ...
- 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" ...
最新文章
- linux arm 常用服务,ARM、linux常用服务器+交叉编译工具链
- SyncStudy Poster
- 计算机文献读后感,论文读后感
- mysqldump 常用备份选项,只备份数据或结构的方法
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer...
- Outlook2016未读邮件怎么设置字体颜色
- 比较决策的收益(洛谷P2705题题解,Java语言描述)
- 腾讯笔试:把两个数和告诉A,积告诉B,求这两个数是什么
- 计算机与计算机视觉史话
- 简约通用工作总结ppt模板
- bootstrap popover弹框内容换行
- 基于51单片机WiFi温湿度远程控制
- 新手入坑GMSSL(二)GMSSL双证书生成
- mysql错误代码1064_如何解决mysql错误代码1064
- PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection阅读
- 中国哲学简史 读书笔记
- python3图片裁剪+转换pdf+压缩
- Number Guessing
- Matlab中的两种除法
- 区块链、通证与供应链风险管理适应性分析研究
热门文章
- Nginx系列1: 正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
- vim autoformat php,vim - 如何在VI中整理HTML文件的缩进?
- 微x模块怎么导入主题_模块
- 六级(2020/12-2) Text2
- 程序员的工资大概多少?
- c语言调用tuxedo步骤,c语言入门之BCB客户端tuxedo开发实例
- python3计算列表长度
- Python (python -m venv)命令创建虚拟环境
- java指令工具_jvm 指令工具 jcmd 命令(Java多功能命令行)
- 钉钉直播教学中遇到的26个常见问题解决方法