社区
新手乐园
帖子详情
printf("%d,%d,%d,%d,%d\n",i++,++i,i,i++,i);
ffscool
2011-03-09 07:33:04
#include <stdio.h>
int main()
{
int i = 3;
printf("%d,%d,%d,%d,%d\n",i++,++i,i,i++,i);
printf("%d\n",i);
return 0;
}
输出结果为啥是 4,4,3,3,3 呢?
请指教。。
...全文
2568
47
打赏
收藏
printf("%d,%d,%d,%d,%d\n",i++,++i,i,i++,i);
#include int main() { int i = 3; printf("%d,%d,%d,%d,%d\n",i++,++i,i,i++,i); printf("%d\n",i); return 0; } 输出结果为啥是 4,4,3,3,3 呢? 请指教。。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
47 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2011-05-10
打赏
举报
回复
不要写连自己也预测不了结果的代码!
zerols
2011-05-10
打赏
举报
回复
编译器不同结果也不同
printf是从右至左栈
VC下i++在该条指令执行之后对i进行操作,++i在i被调用之前对i进行+1操作
故i,i++,i为3,print到++i时,i为4
lan243675044
2011-05-09
打赏
举报
回复
顶楼上的 楼主 你不可能才输出五个值把 还有一个值跑哪去了啊
jilonglv
2011-05-08
打赏
举报
回复
[Quote=引用 40 楼 ask1007 的回复:]
VS2010结果是
5 6 6 3 6
6
..........................
[/Quote]
试过同样的结果。
楼主你才输出5个值,你忽悠我们啊,你是不是猜的?对不住。。。。
printf("%d,%d,%d,%d,%d\n",i++,++i,i,i++,i);
压栈顺序是从右到左(你在调试下将上面一句反汇编成汇编语言可以看出)
其实真的除了 第六个输出是6可以理解。其他输出为什么是这样的,我也想不太通。
望高手指教!
sunfly2010
2011-05-08
打赏
举报
回复
编译器不一样,结果也不一样,只有自己理解就可以了
ask1007
2011-05-08
打赏
举报
回复
VS2010结果是
5 6 6 3 6
6
..........................
tuning工作者
2011-05-07
打赏
举报
回复
int i=100;
printf("%d ,%d\n",++i,i++);
结果是102 100
tuning工作者
2011-05-07
打赏
举报
回复
其实是按照从右向左计算的
ffjj56
2011-05-07
打赏
举报
回复
楼主能不能学点稳定的东西
blacklychen
2011-05-06
打赏
举报
回复
不同编译器,编译顺序不同,导致结果不同!
wizard_tiger
2011-05-06
打赏
举报
回复
不同的编译器就会有不同的结果。
waslgxl
2011-05-05
打赏
举报
回复
编译器问题
因为编译的时候是自右向左结合的
longdenghua
2011-05-05
打赏
举报
回复
[Quote=引用 23 楼 ccforevercc 的回复:]
引用 14 楼 ningweidong 的回复:
编译器不一样,结果就会不一样。
何必纠缠于这个问题呢
同意这个 不同编译器 结果不一样 不必纠结
[/Quote]
++
妹妹
2011-05-05
打赏
举报
回复
我也纠结了
ffscool
2011-03-11
打赏
举报
回复
了解啦。。。纠结与此确实无聊无意义啊~~~谢谢大家。。
hu823287929
2011-03-11
打赏
举报
回复
编译器不同,答案也不会一样
微笑的鱼
2011-03-10
打赏
举报
回复
这种跟编译器相关的代码只有在变态的大学课堂才会出现,严重鄙视!!!
你纠结个啥?没人会写这种垃圾代码!
爱T小毛驴
2011-03-10
打赏
举报
回复
这样的问题,很……
CiCi
2011-03-10
打赏
举报
回复
[Quote=引用 14 楼 ningweidong 的回复:]
编译器不一样,结果就会不一样。
何必纠缠于这个问题呢
[/Quote]
同意这个 不同编译器 结果不一样 不必纠结
ffjj56
2011-03-10
打赏
举报
回复
不用纠结,分5行,自行下断调试,观察
加载更多回复(24)
printf
++
i i
++
逗号运算符
#include <stdio.h> int main() { int i=3; int a = (
printf
("%d ",i
++
),
printf
("%d ",
++
i ),i);
printf
("%d\n",a ); return 0; } //结果是 3 5 5。 这个代码说明: 1、int a = (
printf
("%d ",i
++
),
printf
("%d ",
++
i ),i); a是接受的i的赋值,逗号运算符,把最后的赋值给a。 2、在括号里面.
关于
printf
(“%d,%d“,i
++
,
++
i)的结果的问题
关于下面这行代码在codeblocks下运行的结果,我们先来预想一下。 #include<stdio.h> int main() { int i = 3;
printf
("%d,%d",i
++
,
++
i); return 0; } i = 3,i
++
时先输出i的值等于3,再加1等于4;
++
i先加1等于5,再输出i的值等于5。那么输出的结果应该是3,5 我们是这样想的。 但是实际结果却是这样的: 这就和编译器有关。
printf
函数的计算规则是从右往左,然
printf
输出顺序问题与i
++
、
++
i
printf
输出顺序问题与i
++
、
++
i
printf
()" = "与i
++
、
++
i
printf
() 今天遇到类似这样一道编程题: #include<stdio.h> int main() { int i = 0;
printf
("
++
i,
++
i,
++
i,
++
i,
++
i,
++
i = ");
printf
("%d %d %d %d %d %d\n",
++
i,
++
i,
++
i,+...
关于
printf
("%d,%d",i--,i
++
)的问题
首先看几种情况 1、 int i=1;
printf
("%d,%d\n",i--,i
++
);运行结果为:2,1 这与编译器有关,通过汇编可以很清楚的看到 第一步:把i的值存入缓存器[ebp-0E8h]=1; 第二步:i值加1,i=i+1=2; 第三步:把i的值存入缓存器[ebp-0ECh]=2; 第四步:i值加1,i=i-1=1; 第五步:把缓存器[ebp-0E8h
C语言中%d和%i格式说明符之间的差异
由百分比符号 (%) 形成的序列表示格式说明符,用于指定要从流中检索并存储到附加参数所指位置的数据的类型和格式。简而言之,它告诉我们要存储哪种类型的数据以及要打印哪种类型的数据。 示例:如果要使用 scanf() 和
printf
() 函数读取和打印整数,则使用 %i 或 %d,但在 %i 和 %d 格式说明符中存在细微差别。 %d 指定有符号十进制整数,%i 指定整数 在
printf
中,%d 和 %i 的行为相同
printf
的 %i 和 %d 格式说明符之间没有区别。考虑
新手乐园
33,322
社区成员
41,775
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章