程序b+=a/b++;int a,b;a=b=1;b+=a/b++;console.Write(a,b);为什么b会等于2呢?b++没有生效吗?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/16 11:47:55
程序b+=a/b++;int a,b;a=b=1;b+=a/b++;console.Write(a,b);为什么b会等于2呢?b++没有生效吗?

程序b+=a/b++;int a,b;a=b=1;b+=a/b++;console.Write(a,b);为什么b会等于2呢?b++没有生效吗?
程序b+=a/b++;
int a,b;
a=b=1;
b+=a/b++;
console.Write(a,b);
为什么b会等于2呢?
b++没有生效吗?

程序b+=a/b++;int a,b;a=b=1;b+=a/b++;console.Write(a,b);为什么b会等于2呢?b++没有生效吗?
若b++ 换成 ++b的话 可能与你想象中的是一样的;
你需要 对++的前置 与 后置 加深理解
后置++ 即 b++ 是先赋值后自加
前置++ 即++b 是先自加 后赋值
我建议你还需要多去复习复习运算优先级

  执行完成后b等于3 (如果在 dev-cpp)
  执行过程如下
  tp=a/b
  b++;
  b+=tp;
  所以b=3
  你说b最后等于2,其实也不是不可能,如果我要是做一个编译器,想怎么处理这种表达式都行。所以都是由编译器来处理的,没什么奇怪的。
  你用c试一下吧
  
#include

全部展开

  执行完成后b等于3 (如果在 dev-cpp)
  执行过程如下
  tp=a/b
  b++;
  b+=tp;
  所以b=3
  你说b最后等于2,其实也不是不可能,如果我要是做一个编译器,想怎么处理这种表达式都行。所以都是由编译器来处理的,没什么奇怪的。
  你用c试一下吧
  
#include
int main()
{
int a,b;
a=b=1;
b+=a/b++;
printf("%d %d",a,b);
getchar();
return 0;
}

收起