Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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
我的c函数返回乱码_C_Function - Fatal编程技术网

我的c函数返回乱码

我的c函数返回乱码,c,function,C,Function,所以基本上,每当我输入一个等级,它都会返回一个随机符号,即使我已经定义了等级。如果我使用返回等级中的值不是更好吗但我不知道如何将该字符检索到我的主函数中:=90){ 等级=“A”; }否则 如果(百分比>=70){ 等级=“B”; }否则 如果(百分比>=50){ 等级=“C”; }否则 如果(百分比>=30){ 职系=“D”; }否则{ 等级=“F”; } 返回等级; } 更改函数grade from percentage,您分配的是char*而不是char char GradeFromPer

所以基本上,每当我输入一个等级,它都会返回一个随机符号,即使我已经定义了等级。如果我使用
返回等级中的值不是更好吗
但我不知道如何将该字符检索到我的主函数中:

=90){ 等级=“A”; }否则 如果(百分比>=70){ 等级=“B”; }否则 如果(百分比>=50){ 等级=“C”; }否则 如果(百分比>=30){ 职系=“D”; }否则{ 等级=“F”; } 返回等级; }
更改函数
grade from percentage
,您分配的是
char*
而不是
char

char GradeFromPercentage(float percentage)
{

    char grade;
    if (percentage >= 90)
    {
        grade = 'A';
    }
    else if (percentage >= 70)
    {
        grade = 'B';
    }
    else if (percentage >= 50)
    {
        grade = 'C';
    }
    else if (percentage >= 30)
    {
        grade = 'D';
    }
    else
    {
        grade = 'F';
    }
    return grade;
}

更改函数
grade from percentage
,您分配的是
char*
,而不是
char

char GradeFromPercentage(float percentage)
{

    char grade;
    if (percentage >= 90)
    {
        grade = 'A';
    }
    else if (percentage >= 70)
    {
        grade = 'B';
    }
    else if (percentage >= 50)
    {
        grade = 'C';
    }
    else if (percentage >= 30)
    {
        grade = 'D';
    }
    else
    {
        grade = 'F';
    }
    return grade;
}

将字符串分配给
GradeFromPercentage()
中的
char
变量。您应该使用带单引号的字符常量,而不是带双引号的字符串

以下是一个经过更正和简化的版本:

char GradeFromPercentage(float percentage) {
    if (percentage >= 90) {
        return 'A';
    }
    if (percentage >= 70) {
        return 'B';
    }
    if (percentage >= 50) {
        return 'C';
    }
    if (percentage >= 30) {
        return 'D';
    }
    return 'F';
}

将字符串分配给
GradeFromPercentage()
中的
char
变量。您应该使用带单引号的字符常量,而不是带双引号的字符串

以下是一个经过更正和简化的版本:

char GradeFromPercentage(float percentage) {
    if (percentage >= 90) {
        return 'A';
    }
    if (percentage >= 70) {
        return 'B';
    }
    if (percentage >= 50) {
        return 'C';
    }
    if (percentage >= 30) {
        return 'D';
    }
    return 'F';
}

您正在返回char*
…嗯..不。。。问题在于作业本身。没有得到@SouravGhosh
您返回的字符*
…嗯..没有。。。问题出在作业本身。你不明白@SouravGhoshI为什么编译器没有产生警告。一个好的经验法则是编译时启用尽可能多的警告。如果使用gcc,这些选项很方便:gcc-Wall-Wextra-pedantic-Werror-std=c99(或其他标准)。
“A”
不是
char
“B”
“C”
…编译器对每一个都发出警告。
百分比是一个
浮点值,因此任何比较“应该”都是浮点值(在这种情况下,隐式转换将节省您的时间,但您应该从一开始就正确执行。例如,对于这类语句:
如果(百分比>=30)
应为:
如果(百分比>=30.0f)
当一个字符被双引号包围时,它将成为一个字符串文字,并且该字符串文字的任何赋值都将导致该字符串文字的地址。当一个字符被单引号包围时,它将成为一个字符,并且该字符的任何赋值都将导致该字符。我想知道为什么编译器没有生成一个w警告。一个好的经验法则是在编译时启用尽可能多的警告。如果您使用gcc,这些选项很方便:gcc-Wall-Wextra-pedantic-Werror-std=c99(或其他标准)。
“A”
不是
char
“B”
“C”也不是
…编译器警告每一个。
百分比
是一个
浮点值
,因此任何比较“应该”是浮点值(在这种情况下,隐式转换将节省您的时间,但您应该从一开始就正确执行。例如,对于这类语句:
if(percentage>=30)
它应该是:
if(percentage>=30.0f)
当一个字符被双引号包围时,它将成为一个字符串文字,该字符串文字的任何赋值都将导致该字符串文字的地址。当一个字符被单引号包围时,它将成为一个字符,该字符的任何赋值都将导致该字符。一行:
返回“FFFDDCCBBA”[percentage<0?0:percentage>90?9:(int)(percentage/10)];
im还没有那么先进:Pone-liner:
返回“FFFDDCCBBA”[percentage<0?0:percentage>90?9:(int)(percentage/10)];
im还没有那么先进:P