gpt4 book ai didi

c - 为什么++不能正确递增?

转载 作者:行者123 更新时间:2023-11-30 21:13:43 26 4
gpt4 key购买 nike

我编写了一个简单的函数来计算目录中非隐藏文件的数量。但是我注意到当我使用 ++ 时为了增加计数值,我得到了奇怪的结果,比如负数和非常大的数字。当我转线 *count++;*count = *count + 1;该函数的行为符合我的预期。有人可以解释这种行为吗?

要使用此示例程序,请将目录路径作为第一个参数传递。

#include <stdio.h>
#include <dirent.h>

int count_files_directory(unsigned int *count, char *dir_path)
{
struct dirent *entry;
DIR *directory;

/* Open the directory. */
directory = opendir(dir_path);
if(directory == NULL)
{
perror("opendir:");
return -1;
}

/* Walk the directory. */
while((entry = readdir(directory)) != NULL)
{
/* Skip hidden files. */
if(entry->d_name[0] == '.')
{
continue;
}

printf("count: %d\n", *count);

/* Increment the file count. */
*count++;
}

/* Close the directory. */
closedir(directory);

return 0;
}

int main(int argc, char *argv[])
{
int rtrn;
unsigned int count = 0;

rtrn = count_files_directory(&count, argv[1]);
if(rtrn < 0)
{
printf("Can't count files\n");
return -1;
}

return 0;
}

最佳答案

*count++ 扩展为 *(count++),而不是像您期望的那样 (*count)++。您正在增加地址,而不是文件计数。

关于c - 为什么++不能正确递增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32529685/

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