鱼C论坛

 找回密码
 立即注册
查看: 3672|回复: 6

新手求教

[复制链接]
发表于 2013-1-27 17:49:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void main()
{
  int i=5,j=5,p,q;
  p=(i++)+(i++)+(i++);
  q=(++j)+(++j)+(++j);
  printf("%d,%d,%d,%d",p,q,i,j);
}
为什么运行出来的结果是 15,22.8,8
22是怎么来的,谁能详细说下
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-27 18:38:22 | 显示全部楼层
像这样的 q=(++j)+(++j)+(++j);  就不要问为什么了  估计你今生今世也不会在编程的时候这样写程序……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-27 18:49:33 | 显示全部楼层

这有可能是C语言的一个漏洞,我们是怀着追求真理的精神来鱼C的,就算是以后工作中用不到的,也要问为什么,老湿说过聪明的孩子总喜欢问为什么
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-27 18:53:19 | 显示全部楼层
小明上广州 发表于 2013-1-27 18:49
这有可能是C语言的一个漏洞,我们是怀着追求真理的精神来鱼C的,就算是以后工作中用不到的,也要问为什么 ...

谢谢,没人告诉我,就觉得不自在,睡不着的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-27 19:08:49 | 显示全部楼层
打爆輪胎 发表于 2013-1-27 18:53
谢谢,没人告诉我,就觉得不自在,睡不着的

我刚刚试过了,用code blocks的gcc编译器,编译不通过,用linux里的gcc 4.3编译得22,用TUORO C 2.0 答案24,
类似的问题,一定取决于编译器的,不同的编译器对前置加加的处理不同 ,很多编译器,计算++的时候,
有可能从右向左,有可能从左向右。为了避免这个问题,增强程序的移植性,强烈建议读读林锐的C编程规范
http://wenku.baidu.com/view/e48f20c189eb172ded63b7a9.html
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-27 19:11:07 | 显示全部楼层
有时候,自己测试一下再问别人,这样自己会发现跟多问题
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-27 19:21:05 | 显示全部楼层
小明上广州 发表于 2013-1-27 19:11
有时候,自己测试一下再问别人,这样自己会发现跟多问题

嗯。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 18:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表