程序b+=a/b++;int a,b;a=b=1;b+=a/b++;console.Write(a,b);为什么b会等于2呢?b++没有生效吗?
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 07:51:22
程序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;
}
收起