Developer Network
Developer Network
Developer
:CreateViewProfileText:
登录
MSDN 订阅
获取工具
下载
Visual Studio
SDK
试用软件
免费下载
Office 资源
计划
订阅
Administrators
学生
Microsoft Imagine
Microsoft 学生合作伙伴
ISV
新手
Events(事件)
社区
Magazine
论坛
博客
第 9 频道
文档
API 和参考
开发人员中心
示例
停用的内容
非常抱歉。你请求的内容已被删除。将在 1 秒内自动重定向。
提出问题
快速访问
论坛主页
浏览论坛用户
FAQ
搜索相关主题
Remove From My Forums
积极答复者
我想知道+++ --- ++- --+是怎么个算法,快烦死了。
Visual Studio Development
>
Visual C++
问题
0
登录进行投票
弄个最简单的
#include <stdio.h>
int main()
{
int a, b;
a=b=1;
b=a+++0;
printf("a=%d\tb=%d\n",a,b);
return 0;
}
得出a=2 b=1
怎么得出的结果就这么奇怪呢,到底是怎么运算啊?
2009年12月4日 1:40
回复
|
引用
答案
0
登录进行投票
b=a++;是把a当前的值复制到b 所以b=0;复制后a会自加1 所有 a=1
已标记为答案
enjoyvista
2009年12月4日 2:30
2009年12月4日 2:26
回复
|
引用
全部回复
0
登录进行投票
这个问题很难么?入门教材上的练习题呃。
高手快来快来。
2009年12月4日 2:05
回复
|
引用
1
登录进行投票
O(∩_∩)O哈哈~ 是太简单的了 一般多看看书就会明白的。。。。。。 偶也是新手哈
记住一个规律吧 ++在变量前 当时的值 就+1了 , ++在变量后 要下次使用的时候才会+1
2009年12月4日 2:13
回复
|
引用
0
登录进行投票
那么像这个: a=b=0;
b=a++;
printf("a=%d\tb=%d\n",a,b);
得出a=1 b=0,a增加了1是没错,可是b不是等于a吗?
2009年12月4日 2:20
回复
|
引用
0
登录进行投票
b=a++;是把a当前的值复制到b 所以b=0;复制后a会自加1 所有 a=1
已标记为答案
enjoyvista
2009年12月4日 2:30
2009年12月4日 2:26
回复
|
引用
0
登录进行投票
哦~我终于弄明白了。
太感谢你的回答了,呵呵。
2009年12月4日 2:30
回复
|
引用
0
登录进行投票
C++标准中没有定义这些运算符的顺序,所以这样的代码是不可移植的。如果要这样的代码在所有编译器中运算结果都相同,要用括号确定运算顺序。
The following is signature, not part of post
Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
Visual C++ MVP
2009年12月4日 20:42
回复
|
引用
版主