为什么将此输出字符串转换为数字?

0 c

我对c中的strcmp函数有疑问。作为家庭作业,我们会对字符串进行一些比较。但是尚不清楚,我们必须将数字与该函数进行比较。我知道还有其他比较方法可以比较数字,但是我们的教授是这样使用的。

当我使用这样的功能时:

char string1[] = "1";
char string2[] = "2"

printf("Compare between str1 and str2: %d, %d", strcmp(string1, string2));
Run Code Online (Sandbox Code Playgroud)

->输出:

Compare between str1 and str2: 1
Run Code Online (Sandbox Code Playgroud)

这意味着string1更大。

然后我只有一些变量的printf:

printf("string1 %d", string1);  //output: 6356750
printf("string2 %d", string2);  //output: 6356748
Run Code Online (Sandbox Code Playgroud)

为什么会有这样的数字?这个数字是什么意思?

我以为字符串数组中的数字代表ASCII码,但我认为我错了。

Gem*_*lor 5

请编译完整的警告!请务必仔细阅读这些警告!

编译器应该告诉您格式字符串错误。

printf中的%参数描述了您要提供的变量的类型。他们不提供任何“免费”类型转换,仅提供格式设置,因此当您有字符串时,需要使用%s

编译器试图做的是查看指向您的字符串的指针并将该指针值呈现为整数,但实际上,如果整数的大小与指针的大小不同,它甚至无法正确执行此操作。