首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能告诉我这是怎么工作的吗?(C编程)

有人能告诉我这是怎么工作的吗?(C编程)
EN

Stack Overflow用户
提问于 2012-01-25 20:31:03
回答 10查看 256关注 0票数 1
代码语言:javascript
复制
int m, n, j;
n=16;
j=15;
m = n++ -j+10;
printf("%d", m);

输出: 11。

这里,首先,n的旧值被赋予m,然后它被递增,因此我得到的新值是17,然后求解表达式,即j+10 = 25,然后将n的新值减去25,即17-25。我说的对吗?但是答案与输出的11不匹配。那么这是如何工作的呢?此外,我是编程新手,并开始学习C语言。你会推荐哪本书最适合我?因为我没有编程经验。谢谢。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2012-01-25 20:35:14

m = n++ -j+10;

代码语言:javascript
复制
m = n -j+10;
n = n + 1; // m is 11.

如果它是++n,它将是

代码语言:javascript
复制
n = n + 1;
m = n -j+10; //m is 12.

,那么表达式就求解了,即j+10 = 25

不是的。应该是-j+10 = -5

我的建议是,不要写复杂的表达式,除非你完全确定你在写什么。

票数 4
EN

Stack Overflow用户

发布于 2012-01-25 20:36:05

你在这方面有一些地方错了。

  1. n++将递增n并返回原始结果,因此您将获得m = 16 ....
  2. -j,因此您将获得m = 16 - 15 ....
  3. +10,因此您将获得m = 16 - 15 + 10.

上一次我做数学运算的时候,就像你们看到的,结果是m = 11

如果你希望它是m = 17 - (15 + 10),那么你想:

代码语言:javascript
复制
int m, n, j;
n=16;
j=15;
m = ++n -(j+10);
printf("%d", m);
票数 1
EN

Stack Overflow用户

发布于 2012-01-25 20:54:30

实际上,后增量操作是在操作之后对n执行的…你有16-15+10 = 11,但如果你打印n,你应该有17。

首先,你可以阅读一些关于基础知识的书籍,但这个例子并不简单;它包含了操作符的优先顺序,这可能会很棘手。

开始简单..。用c. http://www.cs.cf.ac.uk/Dave/C/node4.html编写不可读的代码非常简单。

希望能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9002755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档