鱼C论坛

 找回密码
 立即注册
查看: 4607|回复: 10

我又有问题了 (*^__^*) 嘻嘻……

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

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

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

x
本帖最后由 牡丹花下死做鬼 于 2013-1-18 21:25 编辑
  1. #include<stdio.h>

  2. int main(void)
  3. {
  4.         int i = 2, j = 2;
  5.     printf("%d %d\n",j+=i, j-=i);

  6.         return 0;
  7. }
复制代码
为什么输出结果  是 2 0  而不是 4 0
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-18 20:34:37 | 显示全部楼层
j+=i 不是等价于j = j + i  啊  那就是  j = 2 + 2 = 4啊  为什么输出是2  呢??
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-18 20:57:28 | 显示全部楼层
还没人  鸟我吗   :Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-18 20:57:36 | 显示全部楼层
因为你的编译器入栈参数顺序为从右到左。话说,纠结这些花哨的写法有意义吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-18 21:14:30 | 显示全部楼层
正如4楼所言,你的编译器入栈参数顺序为从右到左。
首先  j-=i  等价于j = j - i 此式结果为0,
再算 j+=i  此时j等于0, i 等于2,结果为2,
所以 j+=i, j-=i  等价于  0, 2
如果你的编译器入栈参数顺序为从左到右,
结果又不同了,
所以这样写是不合适的
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-18 21:24:53 | 显示全部楼层

那 该怎么写  呢     ??
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-18 21:49:28 | 显示全部楼层
为什么不回答  我了呢  ??
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-18 22:14:25 | 显示全部楼层
我不知道你这个题是要干什么
如果你是要求两数之和,两数只差,可以这样写:
#include<stdio.h>
int main(void)
{     
      int i = 2, j = 2;   
      printf("%d %d\n",j+i,  j-i);     
     return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-18 22:20:38 | 显示全部楼层
不管怎么说学习了 谢谢啊
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-18 22:51:37 | 显示全部楼层
如果你在单位中这么写,你死定了~:@
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-19 20:10:44 | 显示全部楼层
晕   我感觉应该是4,2   看了5楼的解释才意识到有编译器的影响  嘿嘿 ,感激啊~斯科菲尔德头像果然有好处
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-9 01:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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