| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2179 人关注过本帖
标题:关于printf输出函数的问题
取消只看楼主 加入收藏
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:2 
关于printf输出函数的问题
下面程序我分别在DEV C++  和VC++6.0上运行了一遍,结果不一样,我看网上说了不同的编译器在某些程序
的运行结果等方式上可能会有不同,那正式考试的时候以哪个为主呢?在线等,略急哈哈,谢谢!


程序代码:
#include <stdio.h>

main() 
{ 
    int n=1; 
    printf("%d,%d,%d\n",n,++n,n--); 
    printf("%d\n",n);
} 


运行结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: printf 输出 函数 运行 结果 
2019-03-15 16:16
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
收藏
得分:0 
回复 2楼 rjsp
我用的是王曙燕版本

printf函数中参数的计算顺序应该是先 n--,再 ++n, 最后 n

那么用 VC++ 6.0 运行结果是 2 2 1, 先执行 n--, 结果是 1,然后 ++n, 结果为2, 最后 n, 结果也为2, 理由如下图,我运行了一下图里的结果3 3 2 2 是对的,

就像图里说的注意这里是关键所在,VC++6.0后自增运算是要在整条语句结束以后才自加1的!
图片附件: 游客没有浏览图片的权限,请 登录注册


但是用 DEV C++ 去执行就不是了,它也是先 n--,再 ++n, 最后 n,但它好像是在n--执行完后(也就是整条printf函数还没执行完)就使得n本身自减为0了

然后++n为1, 最后n为1, 结果为 1 1 1

我都晕乎了,但是当时老师给我们每次上课时用的都是VC++ 6.0, 唉
2019-03-15 17:50
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
收藏
得分:0 
回复 4楼 邹阳
好的谢谢
2019-03-16 12:05
快速回复:关于printf输出函数的问题
数据加载中...
 
   



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

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