1、直接运行程序得出结果

#include <stdio.h>void main() {int x = 10, y = 20, z = 30;printf("%d %d %d %d\n", x = y = z, x = y == z, x == (y = z), x == (y == z));}

不用说程序运行就知道结果了:30 30 0 0

可是,这到底是怎么来的?

2、分析一下每一次计算后x,y,z的值分别是多少,

于是改成了如下代码形式:

#include <stdio.h>void main() {int x = 10, y = 20, z = 30;
//    printf("%d %d %d %d\n", x = y = z, x = y == z, x == (y = z), x == (y == z));printf("%d %d %d %d\n", x = y = z, x, y, z);printf("%d %d %d %d\n", x = y == z, x, y, z);printf("%d %d %d %d\n", x == (y = z), x, y, z);printf("%d %d %d %d\n", x == (y == z), x, y, z);}

运行结果是:30 1 0 1

这个结果和我笔算的结果一样,我很满意,不过应该是有问题的?,问题出在这里分多行运行,x,y,z的值在运行完后有改变,所以这样是不行的?

3、再次完美改写,

还是放在一个printf运行,输出每个式子后的x,y,z

#include <stdio.h>void main() {int x = 10, y = 20, z = 30;printf("%d: x=%d y=%d z=%d\n%d: x=%d y=%d z=%d\n%d: x=%d y=%d z=%d\n%d: x=%d y=%d z=%d \n",x = y = z, x, y, z,x = y == z, x, y, z,x == (y = z), x, y, z,x == (y == z), x, y, z);}

看运行结果:

下面来分析结果:

1、在第1个式子运行时,x=y=z,我们把z=30赋值给y,然后又赋值给x,所以 x=y=z=30;

所以这里输出结果就是30。

2、在第 2个式子运行时,x=y==z,优先级:比较运算符>赋值运算符,所以y==z是返回真值1,因为y=z=30,再赋值x=1,那么应该输出为1才是,可是可是输出为30诶???

3、在第3个式子时,x==(y=z),括号的优先级高,那么y=z=30,此时x=30,那么比较运算的结果是成立的,返回真值1才是。可是输出结果是0诶??

4、在第4学式子时,x==(y==z),括号优先级高,那么y==z,返回值是1,x==1,不成立,所以返回为0。

4、这题真的把我整不会了

要是您会,可以不吝赐教吗?

下列程序的运行结果是 #include <stdio.h> void main() { int x = 10, y = 20, z = 30;相关推荐

  1. c语言程序如下,某C语言程序如下: #include stdio.h void main() { floa.._简答题试题答案...

    针对如下在IA-32+Linux+GCC平台上编译运行的C语言程序: struct Record { char name[5]; int code; short id; ...其他结构成员... } ...

  2. c语言switch虚线,有以下程序:include<stdio.h>main(){int c;while((c=getchar())!='\n')switch(c-'2'){case 1:pu...

    有以下程序:include<stdio.h>main(){int c:while((c=getchar())!='\n')switch(c-'2'){case 1:pu 更多相关问题 双代 ...

  3. java程序a-z b-y_以下程序的运行结果是( ) main( ) { int a=-5,b=1,c=1; int x=0,y=2,z=0; if(c0) x=x+y; if(a=0) {...

    [填空题]有以下程序段: s=1.0; for(k=1; k<=n; k++) s=s+1.0/(k*(k+1)); printf("%f\\n",s); 请填空,使下面的程 ...

  4. 第二次作业#include stdio.h int main() { int a,b,c,d,e; printf(请输入一个不多于五位的整数:\n); scanf(%...

    1 判断成绩等级 给定一百分制成绩,要求输出成绩的等级.90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出"输入数据错误". ...

  5. #include stdio.h 和#include stdio.h 的区别

    区别: #include "stdio.h" 当要调用某个函数时 先在用户自已编写的文件中查找,如果找不到再到库文件里去找, 而#include <stdio.h> 是 ...

  6. c语言程序三位整数反向输出,编写程序,输入一个3位整数,反向输出该3位整数 答案:#include stdio.h int main() { intx,a,b,c,f,s; printf(请输入...

    田产市调研数之论法有定量析与定性论二种分法.德尔菲法,亦称家按法,是定量析法也:× https口/ / image.zhihuishu.com / / / / zhs onlinexam uedito ...

  7. /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory 报错解决

    转自:https://blog.csdn.net/BakerTheGreat/article/details/104234472 在64位系统上编译32位可执行程序的命令如下所示: gcc -m32 ...

  8. 5-2交换实数下面的程序,输入两个实数,交换后输出。请在空白处填写适当内容完成此程序。#include <stdio.h>void RealSwap(double *x, doubl

    5-2 交换实数 下面的程序,输入两个实数,交换后输出. 请在空白处填写适当内容完成此程序. #include <stdio.h> void RealSwap(double *x, dou ...

  9. 编程语言与程序的运行

    ========================================== 本文为作者在学习期间的随记,如有错误,烦请指出:如有需要,请在使用时附上原文出处链接. ============= ...

最新文章

  1. MyBatis批量增删改的另外一种思路(推荐)
  2. 供配电负荷计算方法详解
  3. iOS项目开发过程中的目录结构(转)
  4. Swift3.0温习之基础篇
  5. SwiftUI之如何创建常量绑定与自定义绑定
  6. mysql表设计讲解_MySQL中数据库的设计归纳讲解
  7. 你碰到过的最难调试的 Bug 是什么样的?
  8. 编写可测试的JavaScript代码
  9. 从点击一个链接到浏览器显示页面,这个过程中发生了什么?
  10. Win10系列:JavaScript 项目模板中的文件和项模板文件
  11. HTML5+CSS大作业——清新春暖花开个人博客网站(6页)
  12. 2001-2019各省产业结构高级化指数(三产与二产比值)
  13. php源雄武,8个新鲜的PHP常用代码
  14. 外卖红包返利小程序源码系统
  15. matlab收益率,债券价格与收益率的Matlab实现(10页)-原创力文档
  16. matlab图形黎曼几何,黎曼几何是篡改数学概念的几何
  17. 他把菜品变成远销省外的零食,经过口口相传,月卖70万
  18. 人工智能给未来教育的挑战
  19. 安卓 实现网易云音乐底部播放栏效果之使用UI绑定到Service上实现
  20. python求素数积_python求质数的3种方法

热门文章

  1. 如何查询域名是否备案,域名备案批量查询方法
  2. linux mount挂载设备(U盘,光盘,iso等)使用说明
  3. php飞机大战,[游戏发布]飞机大战
  4. 使用JQ来回切换样式的三种方法
  5. Profile and Level
  6. UVALIVE 7505 Hungry Game of Ants DP
  7. 高级控件——列表类视图——列表视图ListView
  8. 缓存:Memcached Redis
  9. 三菱Q系列PLC报错LINK PARA ERROR 链路连接参数异常
  10. C++面试试题大全,包括华为、雅虎等企业