c语言中x=a>b怎样理解

2025-04-08 10:09:53
推荐回答(3个)
回答1:

a[]比a少一维,我具体给你解释下。
几个元素可以组成数组,而几个一维数组可以组成二维数组,如此一直增加维数。
比如说a[0]=2,a[1]=1,a[2]=3,组成一个一维数组,这就是a.但是,你要注意,a不是直接把这些东西都存着的,a只存首地址。
假设定义了一个二维数组a[3][3].这时候a[0],a[1],a[2]就不再是元素了,而代表的是一个有三个元素的一位数组,而此时的a就是一个二维数组。如果感觉这个有点困难没关系,等学习了指针什么的久很好理解这个了。
再说说你给的程序,你是不是在疑问为什么gets()直接给str1 就可以了?还有那个输出函数,为啥只用给str1就可以?
这得给存储方式有关,字符串就是字符的二维数组,gets()需要输入字符串的首地址,这个还算好理解,因为你应该学过了scanf()了,二者差不多,关键是为什么输出函数直接就写了str1呢?printf()之前你学的一般都是(printf("%d",a[1]));这种类型的。这里为啥要填一个地址参数呢?这是因为你前面是%s s代表字符串,字符串本身就是二维的,因此,你当然不能只给他一个单独的元素了,那么,你给了首地址他如何知道你这个字符串是啥呢?因为字符串都是顺序存储的,更重要的是字符串在结尾处有个标志“/0”,因此,你只要给力他首地址,他就知道从哪里开始,从哪里结束了。
纯手打,望采纳。

回答2:

int
a
=
1,
b
=
2,
c
=
3;
a
=
b
=
c
意思是将
c
的值赋给
b,再赋给
a,a,b,c
都等于3。
a
=
b
==
c,
=
的优先级低于
==,会先判断
b
==
c
结果为假,就是0值,然后将0值赋给
a,也就是执行后,a
=
0,
b
=
2,
c
=
3。
a
==
(b=c),会先讲
c
值赋给
b,
然后判断
a
是否等于
b,表达式得到一个0值(a不等于b),但该判断不会影响
a
的值,结果
a
=
1,
b
=
3,
c
=
3。
a
==
(b
==
c)
会先判断
b是否等于c,结果为0,再判断
a
是否等于
0,结果也是0。但该判断不影响a,b,c的值。还是
a
=
1,
b
=
2,
c
=
3.

回答3:

>优先级高于=,所以先运算a>b,
a比b大,这个值为1,同时赋值给x,反之,x的值就为0了。