问题描述
解决方案
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根本不加以检查。
总之,非常不建议初学者学习它。
解决方案二:
这么写是合法的,但是和你理解的意思不同。
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,再计算后一项。
解决方案六:
是错的。要分开:
if(('c'>=BUF[18] && BUF[18]>='a') || ( ))
时间: 2024-10-29 01:49:52