问题描述
第一段代码:
#include <conio.h>
void main ()
{
int a = 10;
a = a++;
printf ("Value of A: %d",a);
}
现在假设代码实际上是:
int b = a++;
然后,发生的情况是将a的初始值分配给b,然后将a递增。因此,如果我们打印这些值,则应为a = 11和b = 10。
但是,在我上面共享的代码段中,该语句是:a = a++;
,因为它是相同的变量,所以当我打印a
时我应该得到11,因为a
递增了对?但这没有发生,我得到的输出为a = 10。为什么会这样?
我的第二个问题是关于预递增运算符(但也适用于预递减运算符)和以下代码片段:
#include <conio.h>
void main()
{
int a = 10;
int b = ++a + a++;
printf ("The value of B is: %d \nand \nThe final value of A is: %d",b,a);
}
现在,如果我用Java编写并运行上述代码,我将得到a = 12和b = 22的输出,而当我们在纸上进行计算时,答案是正确的吗?首先将a递增到11,然后将其添加到a(也是11),并将此最终值(22)分配给b,然后将a再次递增到12。但是在CI中,输出为23。为什么? / p>
我的CS老师告诉我,这是因为我使用的是64位编译器(准确地说是mingw GCC 64位),并且如果使用32位编译器,我的答案将是22。原因,有人可以更深入地解释这种行为吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)