我是一名web开发人员,也是一名会使用多种语言的程序员,这就是当我回到以前的语言时让我感到困惑的地方。有人可以回答这个问题,因为我没有回答这个问题,而且测验基本上是把我的答案搞错了。
int m, n;
m=6;
n=m++;
printf("%d %d", m,n);
-----------
Options
a: 6 6
b: 6 7 ---> the answer i think is right
c: 7 6 ---> the right answer by quiz server
d: 7 7请帮我解释一下答案,因为我认为答案颠倒了。
发布于 2013-05-13 04:57:14
有点像刁钻的问题。
m=6; //simple enough, m now equals 6
n=m++; //post increment operator returns old value so n becomes 6. 但是m的记忆是递增到7的。
所以现在,m=7和n=6
这正是打印出来的内容。
检查的最简单方法是将代码粘贴到调试器中并逐步执行它。如果需要,您可以创建临时变量以获取更详细的信息。
发布于 2013-05-13 04:51:28
后增量运算符返回原始值,然后递增。
这意味着您的测验服务器是正确的。
n=m++;将m的原始值赋给n,然后递增m,
n=6, m=7发布于 2013-05-13 04:51:47
测验服务器是正确的:
m=6; // m = 6
n=m++; // n = m = 6; m = m + 1 = 7;请注意,上面的m的后置增量发生在赋值之后。
https://stackoverflow.com/questions/16511911
复制相似问题