首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >int temp[256 + 128] ={0}和temp[+str[i]] = 1;

int temp[256 + 128] ={0}和temp[+str[i]] = 1;
EN

Stack Overflow用户
提问于 2020-11-16 03:43:32
回答 1查看 186关注 0票数 0

我在谷歌上搜索了一个使用两个数组并在没有字符重复的情况下打印输出的练习,然后我发现这个更容易阅读和修改,但问题是我不理解int temp256 + 128 = {0};temp[+stri] = 1;的含义。

这是完整的代码

代码语言:javascript
复制
#include <unistd.h>

void    remove_dup(char *str, char *str2)
{
    int temp[256 + 128] = {0};
    int i;

    i = 0;
    while (str[i])
    {
        if (temp[(int)str[i]] == 0)
        {
            temp[+str[i]] = 1;
            write(1, &str[i], 1);
        }
        i++;
    }
    i = 0;
    while (str2[i])
    {
        if (temp[+str2[i]]  == 0)
        {
            temp[+str2[i]] = 1;
            write(1, &str2[i], 1);
        }
        i++;
    }
}

int main(int argc, char **argv)
{
    if(argc == 3)
        remove_dup(argv[1], argv[2]);
    write(1, "\n", 1);
    return(0);
}
EN

回答 1

Stack Overflow用户

发布于 2020-11-16 03:48:37

这是:

代码语言:javascript
复制
int temp[256 + 128] = {0};

创建大小为int 256+128 = 384的数组,显式地将第一个元素初始化为0,并将其余元素隐式初始化为0。

这是:

代码语言:javascript
复制
temp[+str[i]] = 1;

包含一元+运算符的示例,它类似于一元-运算符。该运算符实际上不执行任何操作,因此该表达式与以下内容相同:

代码语言:javascript
复制
temp[str[i]] = 1;

它将str[i]用作数组temp中的索引,并将值1分配给该元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64852429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档