[英]I'm confused about the output
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a , b ,c ;
printf("Enter values for a and b: ");
scanf("%d%d",&a,&b);
a = a + b-- ;
if (a<b){
c = -1;
printf("\n\t%d %d %d\n\n",a,b,c);
}
else {
c = 0;
printf("\n\t%d %d %d\n\n",a,b,c);
}
}
让我们假设 a 和 b 的输入值为 2(对于它们两者)。
我研究了上面的程序,但是当涉及到输出时,它将是 4 1 0, a=4,b=1,c=0。 但是,上面的计算部分说 a=a+b-1 这将是 a 的值是 3,现在 a 的新值是 3。但是对于 b,值仍然是 2,因为我们没有分配一个新的对它的价值。
我对输出感到非常困惑。
a+1
、 a++
和++a
之间存在差异。 详情请看这里。 因此,当你说
a = a + b--;
你实际上是在说
a = a + b;
b = b - 1;
如果你说
a = a + --b;
它成为了
b = b - 1;
a = a + b;
如果你说
a = a + (b-1)
它按照您的想法执行: a = a + b - 1
。 b
的值之后不会改变。
一开始,a和b都是2
然后,你执行a = a + b--;
.
递减运算符位于b
,因此其计算结果为:
a=a+b;
b=b-1;
在此之后,a 将为 4,b 将为 1。
a 不小于 b,所以 c 将为 0。
笔记:
如果它是a = a + --b
,它将评估为
b=b-1;
a=a+b;
因为--
是在评估开始时执行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.