gpt4 book ai didi

c - 为什么这两个程序在 VC++2008 中给出不同的输出?

转载 作者:太空狗 更新时间:2023-10-29 15:30:19 25 4
gpt4 key购买 nike

为什么这两个程序在 VC++2008 中给出不同的输出?

毕竟比较的是相同的字符串。

strcmp__usage.c

#include <stdio.h>
#include <string.h>

main()
{
char targetString[] = "klmnop";

printf ("Compare = %d\n", strcmp(targetString, "abcdef"));
printf ("Compare = %d\n", strcmp(targetString, "abcdefgh"));
printf ("Compare = %d\n", strcmp(targetString, "jlmnop"));
printf ("Compare = %d\n", strcmp(targetString, "klmnop"));
printf ("Compare = %d\n", strcmp(targetString, "klmnoq"));
printf ("Compare = %d\n", strcmp(targetString, "uvwxyz"));
printf ("Compare = %d\n", strcmp(targetString, "xyz"));
}

输出

Compare = 1
Compare = 1
Compare = 1
Compare = 0
Compare = -1
Compare = -1
Compare = -1

strncmp_usage.c

#include <stdio.h>
#include <string.h>

main()
{
char targetString[] = "klmnopqrstuvwxyz";
int n = 6;

printf ("Compare = %d\n", strncmp(targetString, "abcdef", n));
printf ("Compare = %d\n", strncmp(targetString, "abcdefgh", n));
printf ("Compare = %d\n", strncmp(targetString, "jlmnop", n));
printf ("Compare = %d\n", strncmp(targetString, "klmnop", n));
printf ("Compare = %d\n", strncmp(targetString, "klmnoq", n));
printf ("Compare = %d\n", strncmp(targetString, "uvwxyz", n));
printf ("Compare = %d\n", strncmp(targetString, "xyz", n));
}

输出

Compare = 10
Compare = 10
Compare = 1
Compare = 0
Compare = -1
Compare = -10
Compare = -13

最佳答案

两者都是strcmpstrncmp保证结果将包括:

A zero value indicates that both strings are equal. A value greater than zero indicates that the first character that does not match has a greater value in str1 than in str2; And a value less than zero indicates the opposite.

返回的实际数字(1/-1 或 12/-13)是特定于实现的,可以是任何值。唯一重要的部分是两者都返回 0、小于零或大于零。在这方面,他们提供了相同的答案。

关于c - 为什么这两个程序在 VC++2008 中给出不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426688/

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