main() {int a=10 ,b=0; if(a=12) {a=a+1; b=b+1;} else {a=a+4; b=b+4 } printf(“%d ;%d \n” ,a , b);结果为什么不是14和4?解释一下
来源:学生作业帮助网 编辑:六六作业网 时间:2024/09/02 07:42:35
main() {int a=10 ,b=0; if(a=12) {a=a+1; b=b+1;} else {a=a+4; b=b+4 } printf(“%d ;%d \n” ,a , b);结果为什么不是14和4?解释一下
main() {int a=10 ,b=0; if(a=12) {a=a+1; b=b+1;} else {a=a+4; b=b+4 } printf(“%d ;%d \n” ,a , b);
结果为什么不是14和4?解释一下
main() {int a=10 ,b=0; if(a=12) {a=a+1; b=b+1;} else {a=a+4; b=b+4 } printf(“%d ;%d \n” ,a , b);结果为什么不是14和4?解释一下
你写的中间符号有很多错误,不知是打错还是那里就写错了
if(a=12)这是个赋值语句,左值和右值都符合要求,所以if判断为真,并且执行了里面的赋值。既然if为真那么else就为假。就只执行printf了
这里,if(a=12)是用如果的语气,是假设的,而原来应该等于10,所以这个假设可以成立(你假设它不是10二十12)。所以执行 if(a=12) {a=a+1; b=b+1;}
这里有一道类似题目:程序段int a=0,y=10;if(a=0)y--;else if (a》0)y++;else y+=y;程序运行结果?
答案是:20
int a=0,y=10;
i...
全部展开
这里,if(a=12)是用如果的语气,是假设的,而原来应该等于10,所以这个假设可以成立(你假设它不是10二十12)。所以执行 if(a=12) {a=a+1; b=b+1;}
这里有一道类似题目:程序段int a=0,y=10;if(a=0)y--;else if (a》0)y++;else y+=y;程序运行结果?
答案是:20
int a=0,y=10;
if(a=0)y--;//a=0是先给a赋值为0再判断,这里的 a为0了if(a)就是假的,不成立
else if (a>0)//继续判断 a>0 上面已经能 a赋值为0,这里也不成立
y++;
else y+=y;//做这一步了,y=y+y=20
所以a的值是0,y的值是20
这样讲明白了吗?
收起
因为你的if语句里的是赋值语句不是判断语句。即你把12的值赋给a,而不是判断a是否等于12。
if(a=12)//将12赋值给a,此时a = 12,表达式为真所以执行if内的语句,a = 12 + 1 = 13
{a=a+1; b=b+1;} else {a=a+4; b=b+4 }