这个c语言程序为什么得9呢?

来源:百度知道 编辑:UC知道 时间:2024/05/24 08:57:55
main()
{
int k=3,w;
w=(k++)+(k++)+(k++);
printf("%d\n",w);
}
我觉得应该得12啊!

两者是同步进行的 全计算完以后才进行k++

就是12呀
k++是先作操作再加1
第一个k++的时候k是3 执行完以后k就是4了
第二个k++的时候k是4 执行完后k就是5了
第三个k++的时候k是5
最后得出是12

我是在vs2008中运行的
可能和编译器有关吧

这种问题没含义,只会出现在学校的一些无聊的练习里,在java中运行是12,在vc中运行是9,也许再换到别的什么平台又指不定是什么鬼答案呢! 这个和编译器有关系,不提倡这样编程。

k++ 为先返回, 然后++;
k=3
所以w=9
k++了3次 为6

如ls所说... 不同编译器, 结果不一样... 所以尽量避开

这是VC6.0的汇编信息
327: w=(k++)+(k++)+(k++);
004046EF mov eax,dword ptr [ebp-4]
004046F2 add eax,dword ptr [ebp-4]
004046F5 add eax,dword ptr [ebp-4]
004046F8 mov dword ptr [ebp-8],eax
004046FB mov ecx,dword ptr [ebp-4]
004046FE add ecx,1
00404701 mov dword ptr [ebp-4],ecx
00404704 mov edx,dword ptr [ebp-4]
00404707 add edx,1
0040470A mov dword ptr [ebp-4],edx
0040470D mov eax,dword ptr [ebp-4]
00404710 add eax,1
00404713