弱弱的問:說說這個程序在VC6.0下的運行結果

mhpdongxie 2005-09-24 06:22:45
#include <stdio.h>

main()
{
int i,j;
i = 2;
j = i++ * i++;
//j = (i++)*(i++);
printf("%d,%d\n",i,j);

}
我的結果是i=4,j=4,不知道爲什麽,我覺得應該是4,6才對阿
還有註釋中的輿上面的語句也是一樣的吧?
...全文
247 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jcqstc 2005-09-28
  • 打赏
  • 举报
回复
答案是4,6,是无论如何不可能发生的,因为运算符“++”放在变量后面时,只有在本条语句运行结束后再做运算,所以无论是否有(),答案都是4,4;
这条标准在C和C++中是一样的。

而且,我无论如何怎么排式子,也无法用一条句做出4,6来;
gunney 2005-09-28
  • 打赏
  • 举报
回复
6 2
mhpdongxie 2005-09-28
  • 打赏
  • 举报
回复
我顶,问题还没解决呢
mhpdongxie 2005-09-27
  • 打赏
  • 举报
回复
bobob(静思--潜心研究PDF)
----------------------------
是在整个语句结束后(;后)加
==========================================

请问你说得是VC的处理方法,还是C的标准?我记得老师在讲这个问题的时候还特别
强调了,结果是6

level1979 2005-09-27
  • 打赏
  • 举报
回复
乘号要先做,所以j=2*2,在做完2*2后才会执行两个i++
bobob 2005-09-27
  • 打赏
  • 举报
回复
是在整个语句结束后(;后)加
mhpdongxie 2005-09-27
  • 打赏
  • 举报
回复
那么,这个先用后加的"+",是在整个语句结束后(;后)加呢,还是在i++的表达式结束后加?
一条晚起的虫 2005-09-25
  • 打赏
  • 举报
回复
简单的说,i++, 在表达式中先用再加,++i,先加再使用
菜牛 2005-09-24
  • 打赏
  • 举报
回复
又来了。
Tiders 2005-09-24
  • 打赏
  • 举报
回复
举例吧:
s1[i++]=s2[j++],它的含义与下面的完全相等
---------
s1[i]=s2[j];
i=i+1;
j=j+1;
---------所以s1[i++]实际上还是指s1[i]
Tiders 2005-09-24
  • 打赏
  • 举报
回复
main()
{
int i,j;
i = 2;
j = i++ * i++;
//j = (i++)*(i++);
printf("%d,%d\n",i,j);

}
i++或++i,都会使i自身的值加1;但是当(i++)作为一个整体即用作表达式时,这个表达式的值为没有加1之前的i,即:作为表达式时,i++与未加1前i的值是相等的.
而当(++i)作为一个整体即用作表达式时,这个表达式的值为加1之之后的i,即:++i这个表达式的值为原来的i加上1.
----------------------
i--或--i,都会使i自身的值减1;但是当(i--)作为一个整体即用作表达式时,这个表达式的值为没有减1之前的i,即:作为表达式时,i++与未减1之前i的值是相等的.
而当(--i)作为一个整体即用作表达式时,这个表达式的值为减1之之后的i,即:--i这个表达式的值为原来的i减上1.

总结:++或--都能使i本身的值变化,但是能不能使表达式的值发生变化,还得看运算符是在变量前还是后--->在变量后,则表达式的值并没有加或减1,在变量前,则使表达式的值加或减1.


这是规则,没办法

i_noname 2005-09-24
  • 打赏
  • 举报
回复
5: i = 2;
00401028 mov dword ptr [ebp-4],2
6: j = i++ * i++;
0040102F mov eax,dword ptr [ebp-4]
00401032 imul eax,dword ptr [ebp-4]
00401036 mov dword ptr [ebp-8],eax //j = i + i
00401039 mov ecx,dword ptr [ebp-4]
0040103C add ecx,1 //i++
0040103F mov dword ptr [ebp-4],ecx
00401042 mov edx,dword ptr [ebp-4]
00401045 add edx,1 //i++
00401048 mov dword ptr [ebp-4],edx

16,551

社区成员

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

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

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