gpt4 book ai didi

c - 此语句中使用了无意义的三元运算符

转载 作者:行者123 更新时间:2023-12-04 10:26:52 27 4
gpt4 key购买 nike

gcc 4.7.2
c89

你好,

我有这个函数,它将一个指针分配给另一个指针,该指针是字符串结构的一个元素。

这个字符串结构的目的是获取和设置实际字符串的长度。

但是,我不明白他们为什么使用三元运算符。这对我来说没有意义。除了 str->len = src 之外似乎没有其他条件。它只分配而不比较任何东西。

typedef struct tag_str_t str_t;
struct tag_str_t {
char *buf;
size_t len;
};

static void string_set(str_t *str, const char *src)
{
str->buf = (char*)src;
str->len = src ? strlen(src) : 0;
}

这样做会不会更简单、更易读?

str->len = strlen(src);

非常感谢您的任何建议,

最佳答案

代码:

str->len = src ? strlen(src) : 0;

相当于:

str->len = ((src != 0) ? strlen(src) : 0);

我添加了圆括号和额外的表达式来指示表达式的组件所在的位置。您的评论似乎表明您认为 str->len = src 是三元运算符中的条件,但这是错误的;分配的优先级非常低。

作为Jesus Ramos还有explained ,测试的目的是确保不会使用 NULL 指针调用 strlen(),这会导致崩溃。

关于c - 此语句中使用了无意义的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14353271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com