关于自增运算符的一个问题,非高手不能解也!

wly033 2006-07-20 05:41:21
static i=65;
char szSend[20];
//sprintf(szSend,"%d%d%d",++i,++i,++i);
//sprintf(szSend,"%d%d%d",i++,i++,i++);
sprintf(szSend,"%d%d%d",i++,++i,++i);
if (i==90) i=65;

结果是676868

请问执行顺序究竟是怎么样的?
如果我想得到结果是666768,该怎么写?
...全文
291 18 打赏 收藏 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wly033 2006-07-21
  • 打赏
  • 举报
回复
看来只有给定性成不正规的写法了!

因为同在VC6.0下,我的装了vc6的sp4补丁的机子与别人的机子得出的结果都是不一样的.
(是vc6的sp4啊,不是系统的sp4);

同样是vc6,结果有676868与676766两种!
CUG122032 2006-07-21
  • 打赏
  • 举报
回复
无聊
SeRapHiw 2006-07-21
  • 打赏
  • 举报
回复
写这种程序严重有问题。

就像sizeof(int)在VC和TC里。
sirguan 2006-07-21
  • 打赏
  • 举报
回复
这样的代码在不同的编译环境里有不同的效果,所以根本就不该这样写,也就是说是没用的东西,没用的东西不用讨论。
严重同意这位朋友的。因为函数各个参数的求值顺序是不确定的,有可能从左向右,也有可能从右向左,和编译器严重相关。
livedeal 2006-07-21
  • 打赏
  • 举报
回复
就是,这个没有什么好说的,上一次在QQ的群里也论坛了一次~~没有结果,看编译器的~
那个时候好像是
int i=1;
sprintf(szSend,"%d%d%d%d",i++,++i,--i,i++);的问题
wenbo_ying 2006-07-21
  • 打赏
  • 举报
回复
和编译器有关,不要在同一个语句里对同一变量用多个++或--
Elysium 2006-07-21
  • 打赏
  • 举报
回复
呔!(佛门狮子吼...你入魔了)
bellyjuiceforever 2006-07-20
  • 打赏
  • 举报
回复
这样的代码在不同的编译环境里有不同的效果,所以根本就不该这样写,也就是说是没用的东西,没用的东西不用讨论。
xqk 2006-07-20
  • 打赏
  • 举报
回复
VC6 是按代码段编译运行代码的
676868
TC2 是按整个表达式编译运行代码的
686868

看看编译原理就知道了
MuseIn 2006-07-20
  • 打赏
  • 举报
回复
你这么用根本不对的。
snowbirdfly 2006-07-20
  • 打赏
  • 举报
回复
按照编译原理里面说法,sprintf(szSend,"%d%d%d",++i,++i,++i);应该是运算是自右向左~~~
那么就应该获得676868~~~
snowbirdfly 2006-07-20
  • 打赏
  • 举报
回复
恩~
在VC6.0下面调试结果为:676766~~
在VS2003下面的结果为:676868
所以我觉得结果好与编译器有关~~~
菜牛 2006-07-20
  • 打赏
  • 举报
回复
结果完全正确。请看语法书。
wly033 2006-07-20
  • 打赏
  • 举报
回复
并不是我想乱写:

我其实是想得到666768
先是这样写的
sprintf(szSend,"%d%d%d",++i,++i,++i);

结果是686868,我才觉得不可思议,所以我改一下试一下,现在搞得我怎么都想不通结果。
Elysium 2006-07-20
  • 打赏
  • 举报
回复
sprintf(szSend,"%d%d%d",i++,++i,++i);
我用vc6.0+windowsxp下结果是676766
印月微澜 2006-07-20
  • 打赏
  • 举报
回复
试了一下
sprintf(szSend,"%d%d%d",i++,++i,++i);是666767,
从后面一个++i开始算的

sprintf(szSend,"%d%d%d",--i+4,--i+4,--i+4);是666768
Elysium 2006-07-20
  • 打赏
  • 举报
回复
哈哈
sprintf(szSend,"%d%d%d",i+1,i+2,i+3);
arrow8209 2006-07-20
  • 打赏
  • 举报
回复
sprintf(szSend,"%d%d%d",++i,++i,++i);

16,550

社区成员

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

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

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