简单问题:表达式的处理

loweek 2003-09-12 03:47:34
#include "iostream.h"
void mian()
{
int k=5;
k=(k++) + (k++);
cout<<k;
}
请问程序结果是什么?C++就表达式k=(k++) + (k++);的处理顺序是什么?
...全文
72 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
TianGuangZao 2003-09-12
  • 打赏
  • 举报
回复
int k=5;
k=(k++) + (++k);

是 13。
什么时候楼主改的呀!
visio 2003-09-12
  • 打赏
  • 举报
回复
13
TianGuangZao 2003-09-12
  • 打赏
  • 举报
回复
gcc 下为 12 。
int k=5;
k=(k++) + (k++);

=> k = 5 + 5; k++; k++;

相信任何标准的 c++ 编译器都是同一个值。
watchcat 2003-09-12
  • 打赏
  • 举报
回复
12
legend-never-die 2003-09-12
  • 打赏
  • 举报
回复
怎么会是7,是13
tonybaobao 2003-09-12
  • 打赏
  • 举报
回复
vc里面应该是7吧!
具体看编译器的。
sakurar 2003-09-12
  • 打赏
  • 举报
回复
mian是什么?就是main呀。
despider 2003-09-12
  • 打赏
  • 举报
回复
up
wgzh 2003-09-12
  • 打赏
  • 举报
回复
在C++中并没有规定表达式的求值顺序,这跟具体的编译器是有关的。
l1ul1u 2003-09-12
  • 打赏
  • 举报
回复
3: void main()
4: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,44h
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-44h]
0040101C mov ecx,11h
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
5: int k=5;
00401028 mov dword ptr [ebp-4],5
6: k=(k++) + (++k);
0040102F mov eax,dword ptr [ebp-4]
00401032 add eax,1
00401035 mov dword ptr [ebp-4],eax
00401038 mov ecx,dword ptr [ebp-4]
0040103B add ecx,dword ptr [ebp-4]
0040103E mov dword ptr [ebp-4],ecx
00401041 mov edx,dword ptr [ebp-4]
00401044 add edx,1
00401047 mov dword ptr [ebp-4],edx
7: cout<<k;
0040104A mov eax,dword ptr [ebp-4]
0040104D push eax
0040104E mov ecx,offset cout (004289c0)
00401053 call ostream::operator<< (00401080)
8: }

这是在vc下的,汇编代码
不同的编译器结果是不一样的
loweek 2003-09-12
  • 打赏
  • 举报
回复
应该是:

#include "iostream.h"
void mian()
{
int k=5;
k=(k++) + (++k);
cout<<k;
}
请问程序结果是什么?C++就表达式k=(k++) + (++k);的处理顺序是什么?

69,371

社区成员

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

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