我试图了解 C 语言中的以下操作是否有定义的行为:
char *str1 = "some string";
char *str2 = "another string";
if (*str1 > *str2)
//do something...
else
//do something else...
(如题中所说,我指的是使用“>”运算符对字符串进行“比较”)
显然如果我会尝试:
str1 > str2
(没有 * 运算符)
它会根据指针(即字符串的地址)计算结果(对..?)。 我搜索了它的答案但没有找到任何答案,而且我也没有通过玩代码来理解它。 谢谢。
最佳答案
使用间接运算符 *
您实际上是在比较取消引用时指针指向的字符的值。
因此在您的代码中,它正在比较 's'
至 'a'
如下's' > 'a'
这是真的。
值有 char
类型,因此它被明确定义为使用 <
, >
==
, >=
, <=
, !=
运营商。
声明指向字符串文字的指针时要小心,使用 const
限定符以防止意外修改它,因为 that 将是未定义的。
关于使用 "<"或 ">"运算符比较字符串 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35014525/