社区
C语言
帖子详情
新手提问,加加i和i加加的简单问题!
saya0769
2009-12-01 03:00:28
main()
{
int i=8;
printf("%d\n%d\n",++i,i++);
getchar();
}
这个答案是:10 8
main()
{
int i=8;
printf("%d\n%d\n",i++,++i);
getchar();
}
这个答案是:9 9
为什么呢??不明白啊!
...全文
928
31
打赏
收藏
新手提问,加加i和i加加的简单问题!
main() { int i=8; printf("%d\n%d\n",++i,i++); getchar(); } 这个答案是:10 8 main() { int i=8; printf("%d\n%d\n",i++,++i); getchar(); } 这个答案是:9 9 为什么呢??不明白啊!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
songyanshuai
2009-12-02
打赏
举报
回复
i++不能做左值,++i可以,其他的加括号就行了,没必要那么写
liujiaji
2009-12-02
打赏
举报
回复
[Quote=引用 28 楼 bobo364 的回复:]
引用 15 楼 liujiaji 的回复:
楼主稍等片刻结贴,有更好的例子:
i = 8;
printf("%d\n",++i);//此时i的值是8,先自加1,然后输出,因此输出的是9,i的值也是9.
printf("%d\n",--i);//此时i的值是9,先自减1,然后输出,因此输出的是8,i的值也是8.
printf("%d\n",i++);//此时i的值是8,这里是先输出后自加1,所以输出的是8,但i的值9.
printf("%d\n",i--);//此时i的值是9,这里是先输出后自减1,所以输出的是9,但i的值8.
printf("%d\n",-i++);//此时i的值是8,这里是先输出,注意:这里的'-'表示负号运算,因此先打印-i的值即-8,但这
//并不改变i的值,所以i自加1,所以i的值是9.
printf("%d\n",-i--);//此时i的值是9,这里是先输出,注意:这里的'-'表示负号运算,因此先打印-i的值即-9,但这
//并不改变i的值,所以i自减1,所以i的值是8.
}
希望你能明白和提高,呵呵
他所说的并不是单个i,而是多个,明白
[/Quote]
我操,我连题目都看不清奥,即把多嘴。
bobo364
2009-12-02
打赏
举报
回复
[Quote=引用 23 楼 lovesi3344 的回复:]
这种帖可以说是月经贴
我建议这种问题别讨论了
根本没有答案
不同的编译器有不同的答案
而编译器也是人写的
因为编译器是人写的
[/Quote]
很好吗,天天有天天接分
bobo364
2009-12-02
打赏
举报
回复
[Quote=引用 15 楼 liujiaji 的回复:]
楼主稍等片刻结贴,有更好的例子:
i = 8;
printf("%d\n",++i);//此时i的值是8,先自加1,然后输出,因此输出的是9,i的值也是9.
printf("%d\n",--i);//此时i的值是9,先自减1,然后输出,因此输出的是8,i的值也是8.
printf("%d\n",i++);//此时i的值是8,这里是先输出后自加1,所以输出的是8,但i的值9.
printf("%d\n",i--);//此时i的值是9,这里是先输出后自减1,所以输出的是9,但i的值8.
printf("%d\n",-i++);//此时i的值是8,这里是先输出,注意:这里的'-'表示负号运算,因此先打印-i的值即-8,但这
//并不改变i的值,所以i自加1,所以i的值是9.
printf("%d\n",-i--);//此时i的值是9,这里是先输出,注意:这里的'-'表示负号运算,因此先打印-i的值即-9,但这
//并不改变i的值,所以i自减1,所以i的值是8.
}
希望你能明白和提高,呵呵
[/Quote]
他所说的并不是单个i,而是多个,明白
时刻准备中
2009-12-02
打赏
举报
回复
可以结贴了
yangxxxxxx66
2009-12-01
打赏
举报
回复
正如2楼所说,讨论这个没意义
fdget
2009-12-01
打赏
举报
回复
你可以认为printf()函数的执行是自右向左.
jernymy
2009-12-01
打赏
举报
回复
[Quote=引用 23 楼 lovesi3344 的回复:]
这种帖可以说是月经贴
我建议这种问题别讨论了
根本没有答案
不同的编译器有不同的答案
而编译器也是人写的
因为编译器是人写的
[/Quote]
支持
lovesi3344
2009-12-01
打赏
举报
回复
这种帖可以说是月经贴
我建议这种问题别讨论了
根本没有答案
不同的编译器有不同的答案
而编译器也是人写的
因为编译器是人写的
hmg25
2009-12-01
打赏
举报
回复
mark,以前没注意,现在学习啦
mstlq
2009-12-01
打赏
举报
回复
[Quote=引用 14 楼 bobo364 的回复:]
引用 3 楼 thefirstz 的回复:
自右向左进栈:
printf("%d\n%d\n",++i,i++); 先是输出8,然后i变为9,再++i,输出10
printf("%d\n%d\n",i++,++i); 先++i输出9,然后i++,输出9
经典的题目,终于有人说明白了,原来是堆栈原理,记得刚完c的时候,没上数据结构,不明白堆栈,只能从左到右,原来如此,学习了
[/Quote]
压栈顺序跟计算顺序没有必然联系(可以算一个压一个,也可以批量算好然后再压,依赖编译器)……
爱思考是好的,不过小心走火入魔……
liujiaji
2009-12-01
打赏
举报
回复
回帖就是回答别人问的问题被,就算楼主没给分,我也能有吗?是这个意思不?
zhengjiankang
2009-12-01
打赏
举报
回复
[Quote=引用 18 楼 liujiaji 的回复:]
引用 17 楼 z569362161 的回复:
跟计算顺序有关拉.
还有我只差5分就两个小三角了,能不能给5 分啊!谢谢!
不是吧,你怎么还差5分呢,刚才不是有给你5分的吗?
我想问问你,我的可用分没了,怎么才能有啊?
[/Quote]
每天回帖可得10分可用分
liujiaji
2009-12-01
打赏
举报
回复
[Quote=引用 17 楼 z569362161 的回复:]
跟计算顺序有关拉.
还有我只差5分就两个小三角了,能不能给5 分啊!谢谢!
[/Quote]
不是吧,你怎么还差5分呢,刚才不是有给你5分的吗?
我想问问你,我的可用分没了,怎么才能有啊?
z569362161
2009-12-01
打赏
举报
回复
跟计算顺序有关拉.
还有我只差5分就两个小三角了,能不能给5 分啊!谢谢!
caicai999
2009-12-01
打赏
举报
回复
虽然明白,但是以前就没有从堆栈原理来想这个问题。
liujiaji
2009-12-01
打赏
举报
回复
楼主稍等片刻结贴,有更好的例子:
i = 8;
printf("%d\n",++i);//此时i的值是8,先自加1,然后输出,因此输出的是9,i的值也是9.
printf("%d\n",--i);//此时i的值是9,先自减1,然后输出,因此输出的是8,i的值也是8.
printf("%d\n",i++);//此时i的值是8,这里是先输出后自加1,所以输出的是8,但i的值9.
printf("%d\n",i--);//此时i的值是9,这里是先输出后自减1,所以输出的是9,但i的值8.
printf("%d\n",-i++);//此时i的值是8,这里是先输出,注意:这里的'-'表示负号运算,因此先打印-i的值即-8,但这
//并不改变i的值,所以i自加1,所以i的值是9.
printf("%d\n",-i--);//此时i的值是9,这里是先输出,注意:这里的'-'表示负号运算,因此先打印-i的值即-9,但这
//并不改变i的值,所以i自减1,所以i的值是8.
}
希望你能明白和提高,呵呵
bobo364
2009-12-01
打赏
举报
回复
[Quote=引用 3 楼 thefirstz 的回复:]
自右向左进栈:
printf("%d\n%d\n",++i,i++); 先是输出8,然后i变为9,再++i,输出10
printf("%d\n%d\n",i++,++i); 先++i输出9,然后i++,输出9
[/Quote]
经典的题目,终于有人说明白了,原来是堆栈原理,记得刚完c的时候,没上数据结构,不明白堆栈,只能从左到右,原来如此,学习了
The_facE
2009-12-01
打赏
举报
回复
见鬼,是谁最先研究这种东西的?
Debugcool
2009-12-01
打赏
举报
回复
printf的参数是后面到前面依次放到栈中的。。。。
加载更多回复(11)
java中的前
加加
和 后
加加
本文深入解析Java中前
加加
和后
加加
运算符的区别,通过实例代码演示两者在不同场景下的运算结果,帮助读者理解自增运算符的使用细节。
初识c++(34)之i++(前
加加
)与++i(后
加加
)的重载
本文介绍了如何在C++中为自定义迭代器重载前置`++`(前
加加
)和后置`++`(后
加加
)操作符,以实现与内置整数类型相同的效果。通过示例代码展示了重载的过程,并指出后置`++`通常会利用前置`++`的重载实现。
java中前
加加
和后
加加
(精彩案例)
本文通过具体案例对比了Java中前
加加
和后
加加
运算符的区别,详细解析了两者在while循环中的表现,前者在使用前先自增,后者则在使用后自增。
java中前
加加
++和后
加加
++的详解
本文深入解析Java中前
加加
++和后
加加
++运算符的区别与使用场景,通过实例详细阐述其工作原理,帮助读者理解并掌握自增运算符的特性。
printf函数输出多个printf 、前置
加加
或者后置
加加
本文详细解析了前置
加加
和后置
加加
的区别,包括它们在编译器中的实现方式,以及如何使用printf函数输出这两种运算符的结果。通过具体的代码示例,深入理解这两种运算符的行为。
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章