c语言一道题
C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别
main(){inta=1,b=2,c=3;printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));}...
百度知道:
首先谢谢楼主,这个问题真好!我刚才的回答错了,现在删了重答,不过执行的结果还是3,1,0,0 这个我实际操作过了。首先=和==的意思楼上各位已经说的很清楚了,一个是赋值,一个是判断,==的优先级高于=,==两边的值若相等,则判断为真,整个表达式的值为1,否则为0。这是前提,下面来看这个问题。刚才我的错误在误以为printf函数是自左向右执行,就像我们的书写习惯一样,不过实际不是。由于printf执行参数输出时是压栈操作(为了支持不定个数的参数的输出,故从后向前执行),所以会先对最后一个进行操作,也就是从右向左输出(脸红,老师貌似也讲过,不过。。。悔不该当初啊)。所以整个printf执行步骤如下:第一步是最后一个a==(b==c),b是2,c是3,明显不等,所以b==c的值是0,然后a是1,和0又不等,所以整个式子值为0;第二步为倒数第二个,a==(b=c),先将c赋给b,此时b和c都为3,再判断a与b是否相等,a为1,不等,整个式子为0;第三步:a=b==c,经过上一步,此时b和c都为3,所以判断b==c为真,值为1,然后将1赋给a,输出a,就是1;第四步:a=b=c,自右向左,先将c值赋给b,再将b值赋给a,输出a,即为3,结果3,1,0,0。这个题目告诉我们上课一定要认真听讲(再次脸红)。累死我了。
这是错误的,但也八九不离十了。
这是群友发出的问题,首先我也以为是3 1 0 0
首先在程序run time,调用printf函数时,会从右到左把参数压栈,这个只要学过一些汇编就了解了。
所以是a==(b==c)首先执行,这个和答案。
但是最后的3,3,0,0是因为函数还没有完全执行完,在现场恢复前,才会将a输出,而最后的a=b=c最终赋值a=3,然后在输出a=b=c,a=b==c(输出的是a的值)
因此是3 3 0 0

这是群友的图


这就是 罠わな,注意了
c语言一道题的更多相关文章
- C语言之非常简单的几道题
C语言之非常简单的几道题(还是写写),比较简单吧,主要有几道题的数据类型(如,第三题)和语句顺序(如,第二题)需要注意一小下下. 1. 求表达式S=1*2*3……*N的值大于150时,最小的N的值 / ...
- c语言自加自减三道题
int x , y,z; x = 0; y = z = -1; x += -z ---y; printf("x=%d\n",x) x = 2 为什么? x + = -z - - ...
- 杭电OJ第11页2010-2019道题(C语言)
2010. 水仙花数 问题描述 Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位 ...
- 关于牛客网C语言结构体位域(bit-fields)的一道题
题目链接地址: https://www.nowcoder.com/questionTerminal/f4e20747a2dd4649bac0c028daa234f4 来源:牛客网 低地址字节 Byte ...
- 分享:经常说你精通C语言,看看这十道题你会不会解!
今天给大家分享我们在日常工作中可能遇到的疑问,不看答案,你是否有把握都能答对?让我们来试试吧~ 一.会输出"hello-std-out"? 参考答案: stdout和stder ...
- 杭电OJ第11页2000-2009道题(C语言)
1. ASCII码排序 问题描述 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符 Input: 输入数据有多组,每组占一行,有三个字符组成,之间无空格 Output: 对于每组输入 ...
- 20155324王鸣宇对C语言课程回顾及对Java的展望
# 第二次预备作业 你有什么技能比大多人(超过90%以上)更好? 针对这个技能的获取你有什么成功的经验? 与老师博客中的学习经验有什么共通之处? 我谦虚的说整个2015级五系英雄联盟这个游戏我最厉害( ...
- IOS系列swift语言之课时二
今天我们要讲的就是函数[对于函数,在最后面还有几道题,喜欢的博友可以看了自己做一下,和我交流一下] 当然这与我们的c语言还是有一定的共同之处的,对于有一些c语言或者是java基础的童鞋,我觉得是很容易 ...
- 刘子健的第二次博客——有关CCCCC语言(・᷄ᵌ・᷅)
刘子健的第二次博客--有关CCCCC语言(・᷄ᵌ・᷅) 下面又到了回答老师问题的时候啦-(・᷄ᵌ・᷅) 有些问题正在深思熟虑中!敬请期待近期的不间断更新! 你有什么技能比大多人(超过90%以上)更好? ...
随机推荐
- python实用工具包
文本处理 FlashText 大规模关键字搜索利器,据说多余500个关键字时性能会明显优于正则表达式,暂未评测! 调试利器 pysnooper 不需要使用print进行调试
- PyCharm indexing goes into infinite loop pycharm 不同的indexing
https://stackoverflow.com/questions/24955896/pycharm-indexing-goes-into-infinite-loop 5 1 I opened u ...
- BraveOS正式版发布,希望大家下载使用
废话不多说,直接贴图才是王道 这里是DOS系统+默认官方(Platform系统) 下载地址:http://pan.baidu.com/s/1eQINwx8 (引导进Platform系统后,默认管理员帐 ...
- seo优化:302跳转变为301跳转
<?php header("Location: http://www.XXX.com",TRUE,301); exit; ?> 要加exit;不加exit;还是会是30 ...
- JS 复制文本兼容移动端 iOS & android
有几个需要注意的地方. 首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本. 另外如果将 input 设置为 `type="hidden&quo ...
- H3C HDLC帧格式
- Python--day40--复习和回调函数实例
- 试用ZooKeeper
ZooKeeper下载 通过ZooKeeper官网下载最新的稳定版本 解压ZooKeeper到某个目录,其目录结构为: 运行环境要求 系统环境 ZooKeeper对于市面上各种操作系统都有了不错的支持 ...
- Django入门8--Templates过滤器
过滤器大大减少了开发的代码量
- 解决从旧格式的 csproj 迁移到新格式的 csproj 格式 AssemblyInfo 文件值重复问题
现在很多小伙伴开始使用了 dotnet core 项目,但是如果是从以前的 dotnet framework 的项目修改为 dotnet core 项目格式,会发现编译的时候出现了 AssemblyI ...