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/07/02 19:40:58
![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?解释一下](/uploads/image/z/2445746-50-6.jpg?t=main%28%29+%7Bint+a%3D10+%2Cb%3D0%3B+if%28a%3D12%29+%7Ba%3Da%2B1%3B+b%3Db%2B1%3B%7D+else+%7Ba%3Da%2B4%3B+b%3Db%2B4+%7D+printf%28%E2%80%9C%25d+%3B%25d+%5Cn%E2%80%9D+%2Ca+%2C+b%29%3B%E7%BB%93%E6%9E%9C%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E6%98%AF14%E5%92%8C4%3F%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8B)
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 }