// "8"对应 ASCLL 56
// "[" 对应 ASCLL 91
String a = "8";
String b = "[";
Console.WriteLine( a.CompareTo(b));
//结果为什么会是1(大于0)
看一下CompareTo定义https://blog.csdn.net/xiven/article/details/4370615
其中说的很清楚如果返回值大于0,说明实参比较大,也就是例子中你说的b比较大
字符串的比较,符号放在前面,不比较ascii(不是ASCLL)
字符才是
char a = '8';
char b = '[';
Console.WriteLine(a.CompareTo(b));
输出值<0(应该是-35吧)
顺便说下,如果要在字符串上执行基于内码(包括ascii)的排序,应该用string.compare,并且传StringComparison.Ordinal参数
String a = "8";
String b = "[";
Console.WriteLine(string.Compare(a, b, StringComparison.Ordinal));
我再补充几句,ascii里面字符的顺序和我们理解的顺序不同,比如说A-Z排在前面,a-z在后面,也就是Z在a的前面。
作为字符串排序,如果把zoo排在China前面,岂不是很荒谬。所以字符串排序并非比较ascii
由题可知a和b都被定义成了字符串
CompareTo中字符串的比较原则如下:
1、如果字符串相等返回值0
2、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值说明前字符串的值小于后字符串,正值说明前字符串大于后字符串)
3、如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全部比较完,这时就比较字符串的长度. (负值说明前字符串的长度小于后字符串,正值说明前字符串的长度大于后字符串)
个人认为该题属于比较原则1,即输出值应该为-35