永发信息网

跪求高手解决C语言中的一个问题

答案:6  悬赏:60  手机版
解决时间 2021-05-09 12:42

#include <stdio.h>

void main()
           {
              int  i=1,j=2,k=3;
              printf("%d,%d,%d,%d\n",i=j=k,i=j==k,i==(j=k),i==(j==k));
           }

在VC中运行结果为什么回事3 1 0 0

最佳答案
printf()是从右往左运算的。
(1)i==(j==k)   j==k为假,所以为0,i==0为假,所以返回0,所以第四个输出0;
此时i=1,j=2,k=3;
(2)i==(j=k),  首先j变为3,i==3为假,所以返回0,所以第三个输出为0
此时i=1,j=3,k=3
(3)i=j==k    首先j==k为真,返回1,i  赋值为1,所以第二个输出1
此时i=1,j=3,l=3
(4)i=j=k    首先把k的值赋给j,再把j的值赋给i,所以i变为3,所以第一个输出为3

全部回答
将输出语句中的四项自右往左执行。。。谢谢。。。

i=j=k是赋值语句:先将k赋值给j,再赋值给i

i=j==k是赋值加判断语句:先将j赋值给i,再判断i是否与k相等,相等则是1,不等则是0

下面的也是差不多的道理……

1、i=j=k 连续赋值,此时 k=3,所以i,j,k最后为3,输出i 为3

2、i=j==k, i=(j==k) 此时,j=k=3, 因此j==k为真(true)所以为1

3、i == (j=k),右侧j赋值为3,i此时为0,因此不等于3,输出为假(false),整数为0,因此输出0

4、i ==(j==k),右侧j=k=3,因此为1,但此时i=0因此i==1不成立,因此输出假(false),整数为0

最后结果,3 1 0 0

因为前面的赋值是正确的,然后后面的判断等式不成立,所以显示默认的false,而VC中不像JAVA中是用true跟false来表示,而是用1跟0来表示,明白了么?

C 语言中大多数库函数的参数都是从右向左的printf 就是,别的楼上已经说的很清楚了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
手机不支持JAVA能下载QQ吗?
1991年农历10月30日是什么星座?有的说是天蝎
天津国济耳鼻喉研究院地址有知道的么?有点事
我想爱你呢。
腾信QQ号马抽奖活动
请大家帮忙推荐几个比较专业的考研网站吧,谢
有什么好听的歌曲?华语、欧美都可以,拒绝棒
和爱的人坐摩天轮真的会幸福吗?
为什么我的问问积分会是负的?我每次的问题都
阿姨我写一句话,关于描写写风的诗句
腾讯qq有无抽奖活动
啦他卤味小吃怎么去啊,有知道地址的么
保定中国电谷是很多公司组成的吗?待遇都是一
关于年半汤圆的诗句,煮熟后的汤圆像什么?(用
男朋友要去外面工作了,可他总是不放心我一个
推荐资讯
一次盛大的宴会,雨果应邀参加。其他受邀人员
临沂哪里有制作水晶物品的
文化路/文采胡同(路口)在哪里啊,我有事要去
金玲无籽小西瓜种子云南哪有卖
小灵通什么牌子比较好?或者有哪些牌子的。多
福建省莆田市梅田路有个甲索尼大厦吗?
北汽威旺开封和鑫开封县店地址有知道的么?有
谁会用拉卡拉 想请教问题
DNfGSD任务
世杰特色水饺地址在哪,我要去那里办事
interten打开会有一个64500导航,要删了怎么
此猫属于哪个种类
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?