| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2417 人关注过本帖
标题:萌新一枚,求求各位大神解答下这个C语言题
只看楼主 加入收藏
iambacking
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-1-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
萌新一枚,求求各位大神解答下这个C语言题
int i=7
printf("%d\n%d\n...............",++i,--i,i++,i--,-i++,-i--);
这个输出来为啥是7 7 6 7 -6 -7?
搜索更多相关主题的帖子: C语言 int 输出 printf i++ 
2020-01-22 16:05
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:4 
未定义行为
结果没意义
没讨论价值
不用管输出
收到的鲜花
  • rjsp2020-01-22 19:44 送鲜花  10朵  

https://zh.
2020-01-22 16:20
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:4 
以下是引用iambacking在2020-1-22 16:05:21的发言:

int i=7
printf("%d\n%d\n...............",++i,--i,i++,i--,-i++,-i--);
这个输出来为啥是7 7 6 7 -6 -7?

你能把你的码完整的打印出来吗?int  i=7后面没分号会报错的啊还有这完全是在胡闹啊,c  printf  打印也有毛病

[此贴子已经被作者于2020-1-22 17:11编辑过]


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-22 17:06
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:4 
这种代码恐怕也只有在大学的时候见到,如果在工作中见到,只能被骂成神经病。
收到的鲜花
  • 叶纤2020-01-23 15:01 送鲜花  2朵   附言:手脚并用的赞同不要鄙视新手送花
2020-01-23 13:59
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:4 
如果将代码补充完整,楼主是这个意思的话:
程序代码:
#include<stdio.h>
int main() 
{
int i=7
printf("%d\n%d\n...............",++i,--i,i++,i--,-i++,-i--);

}

编译有一个问题,如下:int i=7 后没分号。修改后。代码运行如下:
7
7
...............
不是7 7 6 7 -6 -7
2020-01-24 11:00
星系隐
Rank: 2
等 级:论坛游民
威 望:1
帖 子:96
专家分:36
注 册:2018-6-16
收藏
得分:4 
因为有负号所以最后是负数
2020-01-24 11:17
jinxiao66
Rank: 2
等 级:论坛游民
帖 子:11
专家分:16
注 册:2019-12-22
收藏
得分:4 
楼主printf函数中的............估计代表着剩余的4个“%d\n”,该题目可能考察的是自增自减运算与赋值的问题。照着这个思路,我试着写了一下程序:
程序代码:
#include <stdio.h>

int main(void)
{
    int i;
    i=7;
    printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
    printf("*************************\n");
    i=7;
    printf("第一步:-i--\ni=%d\n%d\n---------\n",i,-i--);
    printf("第二步:-i++\ni=%d\n%d\n---------\n",i,-i++);
    printf("第三步:i--\ni=%d\n%d\n---------\n",i,i--);
    printf("第四步:i++\ni=%d\n%d\n---------\n",i,i++);
    printf("第五步:--i\ni=%d\n%d\n---------\n",i,--i);
    printf("第六步:++i\ni=%d\n%d\n",i,++i);
    printf("*************************\n");
    i=7;
    printf("%d %d %d\n",i++,i++,i++);
    i=7;
    printf("%d %d %d\n",i--,i--,i--);
    i=7;
    printf("%d %d %d\n",++i,++i,++i);
}

运行结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

1、程序分为三部分,输出时用“************”来分割。
2、第一部分照题目原意写,输出为7 7 6 7 -6 -7;
3、第二部分假设原题目中printf()函数输出的6个数字,自右向左计算:第一步:-i--,先输出-i的数值-7,再自减为i=6;第二步:-i++,先输出-i=-6,再自加为i=7;第三步:i--,先输出i=7,再自减为i=6,;第四步:i++,先输出i=6,再自加为i=7;第五步,--i,先自减为i=6,再输出i=6;第六步,先自加为i=7再输出为i=7,最终输出为7 6 6 7 -6 -7。实际上第五步,也就是第二个数字与第一部分运行结果不一样。
4、第三部分,对i赋值7以后,分别用printf("%d %d %d\n",i++,i++,i++)、printf("%d %d %d\n",i--,i--,i--)、 printf("%d %d %d\n",++i,++i,++i)来验证,结果当使用i++和i--时,与第二部分的假设运行一致,当使用++i时,是先运行完 全部自加运算后,再输出结果,所以,第二部分的假设的第5第6步,应该都是输出第6步的结果i=7。这样就与第一部分的运行结果一致了。
收到的鲜花
  • 叶纤2020-01-27 21:23 送鲜花  1朵   附言:太认真了,不过没必要,未定义
2020-01-27 19:27
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
#include<iostream>
int main()
{   int i{7},a{i},b{i},c{i},d{i},e{i};
    std:: cout <<++i<<--a<<b++<<c--<<-d++<<-e--<<'\n' ;
    return 0;
}
//给所有的赋值定义才能是正确答案,要不永远得不到正确答案

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-27 21:43
jinxiao66
Rank: 2
等 级:论坛游民
帖 子:11
专家分:16
注 册:2019-12-22
收藏
得分:0 
回复 8楼 叶纤
谢谢您的指点。
如同楼主,我也是萌新一枚。对于C语言,还停留在20年前考计算机二级的认识水平,前段时间因工作中的小想法才起意重新学习C语言,您的回帖为我的学习打开了一扇窗。
收到的鲜花
  • 叶纤2020-01-28 10:05 送鲜花  1朵   附言:三人行你也是我师,您谦虚了
2020-01-28 06:36
快速回复:萌新一枚,求求各位大神解答下这个C语言题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.394926 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved