使用 "<"或 ">"运算符比较字符串 (C)

标签 c

我试图了解 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/

相关文章:

c - 检查输入的值是否为整数

c - Splint静态分析器: not finding splint. rc配置文件(Windows)

c - 用C程序访问sqlite

c++ - 我怎样才能有效地洗牌?

c - 指向数组第一个元素之前的指针

c - 不太清楚如何使用 fread 在 c 中存储字符

c - C 中两个寄存器之间的移位

c - 此 C 代码是否生成 "undefined behavior"?

c - elf 文件中的最大堆栈使用量

页错误陷阱的成本