c语言中不能这样做判断吗

图片说明c语言中的所有比较都是只能2个对象参与吗,这样是错吗

C语言是一种很简陋和充满陷阱的语言。
在举一个例子
if (a=b=c)
{
...
}
这个表达式表面上看是a、b、c相等,其实不然,它会把a b都设为c的值,而且仅仅当c为0(不管a b是什么值),它才是false,否则都是true。

C++还有更不可以思议的地方,比如
int a[10];
cout << 1[a]; 这也是合法的。
当然
a[100] = 1;更是合法的,虽然数组越界了,但是和几乎所有现代的编程语言不同,C根本不加以检查。
总之,非常不建议初学者学习它。

是错的。要分开:

 if(('c'>=BUF[18] && BUF[18]>='a') || (  ))
 这么写是合法的,但是和你理解的意思不同。
1>=a>=2的意思不是a在1~2之间,而是先求1>=a,得到的那个bool值再和2比较。因为无论a>1还是a<1,得到的无非是0 1,都小于2,所以这个表达式恒为true
 这么写是合法的,但是和你理解的意思不同。
1>=a>=2的意思不是a在1~2之间,而是先求1>=a,得到的那个bool值再和2比较。因为无论a>1还是a<1,得到的无非是0 1,都小于2,所以这个表达式恒为true

这样是可以的,不过,或许理解上会有问题

一楼说的正确,这样写是合法的,但判断起来是先计算前面一项,得出是false还是true,再计算后一项。