今天发现了一个奇妙的现象

cronus1625 2014-10-09 12:13:19
#include <stdio.h>
void fun(int a,int b,int c,int d){
printf("%d %d %d %d\n",a,b,c,d);
}
int main(void){
int i = 6 ;
fun(++i,i++,i++,++i);
return 0;
}

结果:
10 8 7 10
哪位大神能解释一下?
(ubuntu 环境下gcc编译器)
...全文
653 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
spearhead_cai 2014-10-11
  • 打赏
  • 举报
回复
这是不可预料的代码,纠结这个没有意义。
版主大哥 2014-10-10
  • 打赏
  • 举报
回复
有奇妙吗? 挂羊头卖狗肉
竹影半墙 2014-10-10
  • 打赏
  • 举报
回复
引用 1 楼 u013163178 的回复:
http://bbs.csdn.net/topics/370153775我曾经也有这样的想法,知道后来看到了这个帖子
点进去仔细读读应该就明白了
赵4老师 2014-10-10
  • 打赏
  • 举报
回复
这样的代码大概可以用来参考买彩票。
mujiok2003 2014-10-10
  • 打赏
  • 举报
回复
gdb> disas main
xiaohuh421 2014-10-10
  • 打赏
  • 举报
回复
C++版块一直有一个专门讲这个的置顶帖. [置顶] C,C++表达式求值顺序 裘老的解释。 自己折腾下可以, 实际工作中不要使用这种, 自己都不知道结果是怎么的代码
707wk 2014-10-10
  • 打赏
  • 举报
回复
能别写这种无聊而且会出问题的代码吗
破碎的泡泡 2014-10-10
  • 打赏
  • 举报
回复
别纠结这种问题,意义不大
  • 打赏
  • 举报
回复
由此可以引申出下列问题 fun(++i,i++,i++,++i) fun(++i,i++,i++,++i) fun(++i,i++,i++,++i)
lliiqiang 2014-10-10
  • 打赏
  • 举报
回复
写自己清楚的代码。系统允许的很多规则无法被我们理解.
li4c 2014-10-09
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/370153775我曾经也有这样的想法,知道后来看到了这个帖子
百曉生 2014-10-09
  • 打赏
  • 举报
回复
一楼说的置顶帖,建议仔细看看
qiminixi 2014-10-09
  • 打赏
  • 举报
回复
没意思.......
老王爱上猫 2014-10-09
  • 打赏
  • 举报
回复
没意思....................
yinweis 2014-10-09
  • 打赏
  • 举报
回复
是听那个的为什么
starytx 2014-10-09
  • 打赏
  • 举报
回复
尽量不写这种代码,看下置顶帖
蓝兔先生 2014-10-09
  • 打赏
  • 举报
回复
如果你在单位里面写出这种代码, 那么你得先做好被离职的思想准备
sunShinezhuyg 2014-10-09
  • 打赏
  • 举报
回复
C\C++允许在一个表达式中使用一个以上的赋值类运算,包括赋值运算符、自增运算符、自减运算符等。这种灵活性使程序简洁,但同时也会引起副作用。这种副作用主要表现在:使程序费解,并易于发生误解或错误。 自增运算符、自减运算符连续多个使用时,由于运算顺序由编译器及当时的运行情况决定,导致运算结果不可控。所以在C程序设计中,要慎重使用自增、自减运算符,特别是在一个表达式中不要多处出现变量的自增、自减等运算。 另:http://blog.chinaunix.net/uid-20767210-id-1849728.html

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧