有谁能告诉我这是如何工作的? (C编程)

时间:2012-01-25 12:31:03

标签: c increment

int m, n, j;
n=16;
j=15;
m = n++ -j+10;
printf("%d", m);

输出:11。

这里,首先,n的旧值被赋予m然后它会递增,所以我得到的新值是17然后表达式被解决,即j+10 =然后将新的n值减去25,即17-25。 我对吗 ?但答案与输出11不匹配。 那怎么办? 而且,我是编程新手并开始学习C.你会建议哪本书最适合我?因为我没有编程经验。 谢谢。

10 个答案:

答案 0 :(得分:4)

m = n++ -j+10;

相同
m = n -j+10;
n = n + 1; // m is 11.

如果是++n那将是

n = n + 1;
m = n -j+10; //m is 12.
  然后表达式被解决,即j + 10 = 25

没有。它将是-j+10 = -5

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

答案 1 :(得分:1)

你在那里遇到了一些问题。

  1. n++会增加n并返回原始结果,因此您已获得m = 16 ...

  2. -j所以你有m = 16 - 15 ...

  3. +10所以你有m = 16 - 15 + 10

  4. 现在我最后一次以m = 11的形式出现数学,就像你看到的一样。

    如果您希望它为m = 17 - (15 + 10),那么您需要:

    int m, n, j;
    n=16;
    j=15;
    m = ++n -(j+10);
    printf("%d", m);
    

答案 2 :(得分:1)

事实上,在操作后n上完成了后增量操作... 你有16-15 + 10 = 11 但如果你打印n你应该有17。

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

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

希望有所帮助

答案 3 :(得分:0)

n++首先返回n的值,然后递增它。
 所以,发生的实际计算是m = 16 - 15 + 10,即11

我认为你想要的是:

m = (n+1) - (j+10);

++运算符的使用是在使用它的当前值来计算n之后增加m的值以供将来使用。

答案 4 :(得分:0)

m,首先计算n - j + 10并将其分配给m。之后执行n++

最后n = 17m = 11

答案 5 :(得分:0)

你做了两个不正确的解释。

首先,如其他答案所示,n++仅在评估整个表达式后递增n

其次,你有-j+10。这不等于-(j+10),因此说j+1025并且您正在寻找something - 25是错误的。另一种观看方式-j+1010-j

答案 6 :(得分:0)

在回答你关于一本好书的问题时 - 你可能想要考虑学习C ++而不是普通的旧C,因为C ++是C的超集。对于C ++,你需要得到Bjarne Stroustrup的'The C ++ Programming Language' 。它很容易阅读,并且会在你的书架上持续很长时间作为一个很好的参考。

答案 7 :(得分:0)

在表达式m = n++ -j+10;中 编译器将表达式视为m= n++ ((-j)+10)
由于n和j的初始值为n = 16j = 15。我们有m = 16++ ((-15)+10)。我们得到的输出为11 表达式执行后,n将递增。

答案 8 :(得分:-1)

n在之后增加,其值将用于m中结束的表达式中。

答案 9 :(得分:-1)

n++ 提升后。在执行:n

之后,它仅增加m = n++ -j+10;的值

++n是预增量。在计算m之前,它会增加n的值。 m = ++n -j+10;