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/11/05 21:41:27

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 }

#include int b=2; int fun(int *k) {b=*k+b;return(b);} main() {int a[10]={1,2,3,4,5,6,7,8}, .main() { int a=1,b=10; do {b-=a;a++;}while(b-- #include int a=3,b=5; max (int a,int b) {int c; c=a>b?a:b; return (c); } void main() {int #include int b=2; int fun(int*k) { b=*k+b;return(b);} main() {int a[10]={1,2,3,4,5,6,7,8}#include int b=2; int fun(int*k) { b=*k+b;return(b);} main() {int a[10]={1,2,3,4,5,6,7,8},i;for(i=2;i void fun(int a,int b) { int t; t=a;a=b;b=t; } main()void fun(int a,int b){ int t; t=a;a=b;b=t; } main() { int c[10]={1,2,3,4,5,6,7,8,9,0}.i; for(i=0;i main() {int m[10],a;for(a=0,a #include using namespace std; int main() { int a,b,c; a=3; int f(int x,int y,int z);#include using namespace std; int main() {int a,b,c;a=3;int f(int x,int y,int z); cin>>a>>b>>c;c=f(a,b,c);cout main( ) {unsigned int a=3,b=10; printf(%d/n,a1); } #include void main(){ int b=3;int a; int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123;#include using namespace std;void main(){ int b=3;int a; int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf(%d,%d ,*(p #include int main() { int a,b,c; scanf(%d,%d,&a,&b); printf(c=a+b ,a,b); } 下面是一个C语言程序 关于输出三个数中的最大值和最小值#includeint dm(int,int,int);main() { int a,b,c; a=10; b=51; c=40; printf(max=%d,min=%d,dm(a,b,c));getch();} int dm(int n1,int n2,int n3) { int max,min;if (n1>n2){max=n1;mi swap(int *p1,int *p2) {int temp; temp=*p1; *p1=*p2; *p2=temp; } main() { int a,b; int *pointer_1,*pswap(int *p1,int *p2){int temp;temp=*p1;*p1=*p2;*p2=temp;}main(){ int a,b;int *pointer_1,*pointer_2;scanf(%d,%d,&a,&b);pointer_1=&a;pointer_2=&b;if(a #include void fun(int a, int b) { int t; t=a; a=b; b=t;main() { int c[10]={1,2,3,4,5,6,7,8,9,0), i; for (i=0; i error C2065:'a' :undeclared identifier#includeint main(){int print_shang();int print_xia();print_shang();print_xia();return 0;}int print_shang(){int a,b;for(a=1;a int a=2; int f(int a); {return (a)++;} main() {int s=0; {int a=5; s+=f(&&a);} s+=f(&&a); printf(%da=2;int f(int a);{return (a)++;}main(){int s=0;{int a=5;s+=f(&&a);}s+=f(&&a);printf(%d ,s);}执行的输出结果是()A 10 B 9 C 7 D 8 #include stdio.h void fun(int a,int b) { int t; t=a,a=b,b=t; } main() { int c[10]={1,2,3,4,5,6,7#include stdio.hvoid fun(int a,int b){int t;t=a,a=b,b=t;}main(){int c[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i int b=2;int fun(int*k) {b=*k=b;return (b);} main() {int a[10]={1,2,3,4,5,6,7,8} for (i=2;i #define MAX 10 int a[MAX],i; int main( ) sub1( ) { for(i=0;i