i=3
s=0
求s=(i++)+(++i)+(i++)
最后打印 s,i的值
s=0
求s=(i++)+(++i)+(i++)
最后打印 s,i的值
解决方案 »
- C++的double myfunc(POINT xy,POINT xy1); 改为对应的delphi应该怎么写?
- DLL 返回的是结构体时怎么调用
- 如下截面如何设计请高手指点,谢谢!
- 打开带有ADOQUERY、ADOTABLE的Form出错?
- 怎么从安装包中提出文件???高手快来!
- 如何实现RichEdit的打印功能?急.急
- 决定用delphi开发一个基于WIN2000下的邮件服务器...
- 大家好,在Delphi中怎样才能体现会计报表格式 谢谢
- 如何判断网络中某一台计算机是否存在(TCP/IP)?
- 请教各位大侠:TCHART控件是哪个公司提供的
- *******帮忙呀!!有关对话框的简单操作********
- ?????简单的数据库错误问题,高手来指点一下吧!!??
s := 11
你写个C程序不就知道了。
i := 6;
s := 13;
那么我原先s算错了。
s = 15如果去掉括号,s = 13
我是新手你们讲清楚点嘛?可以吗?正确的是6,12 我来分析一哈请指教哈
s= (i + + ) + ( + + i )+ (i + + ) {我们教材不是讲到i++是先用i}
↓ ↓ ↓ ↓ ↓ ↓ {在自加吗?++i是先自加才用的
i的变化值 :i=3 i=4 i=5 i=5 i=5 i=6 {啊???}
↓ ↓ ↓
括号中的总值: 3 5 5
这样看来不是 i=6;s=13 吗? 我还是没懂啊
应该是编译器进行优化的结果
(编译器肯定会进行优化,但是可能就不是你所要的结果了)
看看以下的例子就清楚了
#include <conio.h>int main(int argc, char* argv[])
{
int i, s;
i = 3;
s = i++;
printf ( "i = %d, s= %d\n", i, s );
s += (++i);
printf ( "i = %d, s= %d\n", i, s );
s += i++;
printf ( "i = %d, s= %d\n\n", i, s );
i = 3;
s = (i++)+ (--i);
printf ( "i = %d, s= %d\n\n", i, s );
i = 3;
s = (++i)+ (i++);
printf ( "i = %d, s= %d\n\n", i, s );
i = 3;
s = (i++)+ (--i)+ (i++);
printf ( "i = %d, s= %d\n\n", i, s );
i = 3;
s = (i++)+ (--i)+ (i++)+ (i++);
printf ( "i = %d, s= %d\n\n", i, s );
i = 3;
s = (i++)+ (++i)+ (i++);
printf ( "i = %d, s= %d\n\n", i, s );
i = 3;
s = (i++)+ (++i)+ (i++)+ (i++);
printf ( "i = %d, s= %d\n\n", i, s );
i = 3;
s = (i++)+ (++i)+ (i++)+ (i++)+ (i++);
printf ( "i = %d, s= %d\n\n", i, s );
getch();
return 0;
}
结果:
4 3
5 8
6 133 45 84 65 86 127 168 20
s := 13;s:=3+5+5
12,
没错的,
VC Dev都是这个结果