Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 关于比较字符串和整数的问题。CS50 Pset 4_String_Integer_Cs50 - Fatal编程技术网

String 关于比较字符串和整数的问题。CS50 Pset 4

String 关于比较字符串和整数的问题。CS50 Pset 4,string,integer,cs50,String,Integer,Cs50,我正在学习CS50PSET4 据我所知,我键入了相同的单词,例如:“Emma”。当我比较它们时,它们将不相同,因为它们将它存储在内存中的两个不同地址中 但我对整数感到困惑,即使我输入了相同的数字,它们也存储在内存中的两个不同地址中。但当我比较它们时,它们是相同的 有人能告诉我我误解了什么吗 #include <stdio.h> #include <cs50.h> int main(void) { int i = get_int("i: ");

我正在学习CS50PSET4

据我所知,我键入了相同的单词,例如:“Emma”。当我比较它们时,它们将不相同,因为它们将它存储在内存中的两个不同地址中

但我对整数感到困惑,即使我输入了相同的数字,它们也存储在内存中的两个不同地址中。但当我比较它们时,它们是相同的

有人能告诉我我误解了什么吗

#include <stdio.h>
#include <cs50.h>

int main(void)
{
    int i = get_int("i: ");
    int j = get_int("j: ");

    char *s = get_string("s: ");
    char *t = get_string("t: ");

    if (i == j)
    {
        printf("Same\n");
        printf("%p\n", &i);
        printf("%p\n", &j);
    }
    else
    {
        printf("Different\n");
        printf("%p\n", &i);
        printf("%p\n", &j);
    }

     if (s == t)
    {
        printf("Same\n");
        printf("%p\n", &s);
        printf("%p\n", &t);
    }
    else
    {
        printf("Different\n");
        printf("%p\n", &s);
        printf("%p\n", &t);
    }
}
#包括
#包括
内部主(空)
{
int i=获取_int(“i:”);
int j=获取int(“j:”);
char*s=get_字符串(“s:”);
char*t=get_字符串(“t:”);
如果(i==j)
{
printf(“相同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
如果(s==t)
{
printf(“相同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
}

不能使用
==
比较两个字符串。为了成功地执行此操作,您可以使用名为
strcmp
的函数,或者创建一个循环来迭代字符串中的所有字符。(include
#include
以使此工作正常。这是您的代码的外观:

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

int main(void)
{
    int i = get_int("i: ");
    int j = get_int("j: ");

    char *s = get_string("s: ");
    char *t = get_string("t: ");

    if (i == j)
    {
        printf("Same\n");
        printf("%p\n", &i);
        printf("%p\n", &j);
    }
    else
    {
        printf("Different\n");
        printf("%p\n", &i);
        printf("%p\n", &j);
    }

     if (strcmp(s, t) == 0)
    {
        printf("Same\n");
        printf("%p\n", &s);
        printf("%p\n", &t);
    }
    else
    {
        printf("Different\n");
        printf("%p\n", &s);
        printf("%p\n", &t);
    }
}
#包括
#包括
#包括
内部主(空)
{
int i=获取_int(“i:”);
int j=获取int(“j:”);
char*s=get_字符串(“s:”);
char*t=get_字符串(“t:”);
如果(i==j)
{
printf(“相同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
if(strcmp(s,t)==0)
{
printf(“相同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
}

strcmp
输入两个字符串,如果相同,则输出
0
,如果不相同,则输出任何其他数字。(希望这有帮助!!:)

==
总是比较值,但指针值是表示内存地址的数字,而整数值只是没有任何间接或内存位置的整数。所以你的意思是字符串实际上是指针值?但整数不是吗?不完全是,
char*
(如果以null结尾,则称为字符串)是指向字符串第一个字符的指针。它的值是一个数字内存位置(打印它,请参阅,
printf(“%p\n”,s)
)。整数也是一个数字值,它实际上是它自己的值。如果要比较字符串的值,而不是内存位置,请使用strcmp。