++运算符问题

paschen 2012-02-08 02:13:30
++运算符在前和在后我都懂,但下面这几个式子还是很费解,求解释

#include <iostream.h>
int fun(int x, int y)
{
return x*y;
}
void main()
{
int k=5;
cout<<fun(++k,++k)<<endl;

k=5;
cout<<fun(k++,k++)<<endl;

k=5;
cout<<fun(++k,k++)<<endl;

k=5;
cout<<fun(k++,++k)<<endl;

k=5;
cout<<(++k)*(++k)<<endl;

k=5;
cout<<(k++)*(k++)<<endl;

k=5;
cout<<(++k)*(k++)<<endl;

k=5;
cout<<(k++)*(++k)<<endl;
}


答案依次是: 42 25 30 36 49 25 36 36
...全文
102 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuzhoulh 2012-02-09
  • 打赏
  • 举报
回复
以上是我VC6编译的

++的使用说明我都懂,可放在这个里面又有很多疑惑
比如这个:
k=5;
cout<<(++k)*(++k)<<endl;
算得49怎么搞的,我怎么想都是6*7=42的

VC6编译下是按什么顺序算的?
//////////////////////////////////////////////////////////

楼主需要搞清楚计算的先后顺序:
“()”的运行级别要高于“*”, 所以:
第一步(++k)执行后,k=6 ;
第二步(++k)执行后,k=7;
第三步才是 7*7 = 49;
paschen 2012-02-09
  • 打赏
  • 举报
回复
谢谢,基本想通了
hdg3707 2012-02-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 meat 的回复:]
实际写程序,没人这样写,出题的都是不搞编程的,都是教兽
[/Quote]
同意,真正的教授是不会这么出的
meat 2012-02-08
  • 打赏
  • 举报
回复
实际写程序,没人这样写,出题的都是不搞编程的,都是教兽
paschen 2012-02-08
  • 打赏
  • 举报
回复
以上是我VC6编译的

++的使用说明我都懂,可放在这个里面又有很多疑惑
比如这个:
k=5;
cout<<(++k)*(++k)<<endl;
算得49怎么搞的,我怎么想都是6*7=42的

VC6编译下是按什么顺序算的?
飞天絮雪 2012-02-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 visualeleven 的回复:]

没人会这么写的,和编译器有关系
[/Quote]
楼上这个说的很对,和具体的编译器有关系!不同的编译器可能有不同的结果。
gameslq 2012-02-08
  • 打赏
  • 举报
回复
具体计算结果和编译器有关系
slz17 2012-02-08
  • 打赏
  • 举报
回复
stdcall cdecl fastcall thiscall naked call 全来一次 其实这种问题很蛋疼
Eleven 2012-02-08
  • 打赏
  • 举报
回复
没人会这么写的,和编译器有关系
BombZhang 2012-02-08
  • 打赏
  • 举报
回复
int k=5;
cout<<fun(++k,++k)<<endl;

k=5;
cout<<fun(k++,k++)<<endl;

k=5;
cout<<fun(++k,k++)<<endl;

k=5;
cout<<fun(k++,++k)<<endl;

上面几个我调试了一下发现结果是:49 30 35 42
shiyunqiang 2012-02-08
  • 打赏
  • 举报
回复
楼主看一下++运算符的使用说明吧。
BombZhang 2012-02-08
  • 打赏
  • 举报
回复
++或--运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。

对于函数fun来说,其两个参数为两个表达式
rubywang731 2012-02-08
  • 打赏
  • 举报
回复
我给你分别说明他们的数值吧。
6,7
5,5
5,6
.......
运算顺序为先右后左

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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