Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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语言中的主要参数和函数 #包括 整数乘法(整数n){ int-doenstwork=n*2; 回归网络; } int main(int argc,char*argv[]){ int n; n=atoi(argv[1]); 返回乘法(n); }_C_Main - Fatal编程技术网

c语言中的主要参数和函数 #包括 整数乘法(整数n){ int-doenstwork=n*2; 回归网络; } int main(int argc,char*argv[]){ int n; n=atoi(argv[1]); 返回乘法(n); }

c语言中的主要参数和函数 #包括 整数乘法(整数n){ int-doenstwork=n*2; 回归网络; } int main(int argc,char*argv[]){ int n; n=atoi(argv[1]); 返回乘法(n); },c,main,C,Main,我编译,但当我用一个参数运行它时,我什么也看不到。用gcc-std=c99 filename.c-g编译它 您没有定义变量“DoesNetwork”。这不应该编译 函数“乘法”的结尾不能是一个右括号。这不应该编译 函数“multiply”不包含函数原型。这不应该编译 如果你的IDE是如此懒惰,它将编译这个,那么你怎么知道它“不工作”?也许它向操作系统返回了一些int 使用问题中的更新代码,您有几个问题: 输入错误:声明变量doenstwork,然后尝试引用doestwork 既然你说你可以编译并

我编译,但当我用一个参数运行它时,我什么也看不到。用gcc-std=c99 filename.c-g编译它

  • 您没有定义变量“DoesNetwork”。这不应该编译

  • 函数“乘法”的结尾不能是一个右括号。这不应该编译

  • 函数“multiply”不包含函数原型。这不应该编译

  • 如果你的IDE是如此懒惰,它将编译这个,那么你怎么知道它“不工作”?也许它向操作系统返回了一些int


  • 使用问题中的更新代码,您有几个问题:

  • 输入错误:声明变量
    doenstwork
    ,然后尝试引用
    doestwork

  • 既然你说你可以编译并运行你的程序,那么你发布的内容显然与你实际运行的内容不同。始终复制并粘贴您的确切代码。如果你重新输入,你会犯这样的错误,而我们这些试图帮助你的人无法区分你在问题中输入代码时犯的错误与你正在编译和运行的代码中实际存在的错误之间的区别

  • main
    返回的值是程序的状态,而不是其输出。在类Unix系统上,此值的低阶8位被忽略,因此这不是程序返回详细信息的好方法

  • 一旦我纠正了输入错误,我就可以使用您的程序:

    #include <stdio.h>
    
    int multiply(int n){
    
    int doenstwork = n * 2;
    
    return doesntwork;
    }
    
    int main(int argc, char *argv[]){
    
    int n;
    
    n = atoi(argv[1]);
    
    return multiply(n);
    
    }
    
    但它只适用于小范围的值:

    $ gcc c.c -o c
    $ ./c 7 ; echo $?
    14
    
    程序的状态用于指示它是成功还是失败,并可能返回有关失败原因的少量信息。返回值0表示执行成功;返回
    EXIT\u FAILURE
    (在
    中定义)表示失败。在类Unix系统上,通常
    EXIT_FAILURE==1
    ;有时,类似于2的值用于表示不同类型的故障。例如,
    grep
    如果找到匹配项,则返回状态0;如果未找到匹配项,则返回状态1;如果出现其他错误(例如格式错误的正则表达式或缺少文件),则返回状态2

    要从程序中获取信息,最简单的方法是以文本形式将信息打印到标准输出。你可以替换

    $ ./c 1000 ; echo $?
    208
    


    您可以添加一个
    返回0之后;从C99开始,这不是必需的,但明确是个不错的主意。

    事实上,比利·鲍勃是正确的。不同的IDE和编译器需要不同级别的严格性。完全符合ANSI/ISO标准,需要原型等可以为您节省很多麻烦。您的编译器应该需要一个原型

    该行:

    printf("%d\n", multiply(n));
    

    也是可疑的,因为在C中数组是从零开始索引的,所以数组中的第一项应该是
    argv[0]

    作为参考,
    }
    是一个“大括号”<代码>]
    是一个“括号”。好吧,我修正了所有问题,但不知道这意味着什么:函数“multiply”不包含函数原型。这不应该编译。@user2682811,Billy Bob错了。您的代码不需要向前声明,因为
    multiply
    main
    之前声明。仍然不起作用。。。可以编译,但当发送一个参数时,我得到了分段错误,编译器会说什么?你发布的代码不会编译,它与参数无关。#包括int-multiply(int-n){int-doenstwork=n*2;return-doestwork;}int-main(int-argc,char*argv[]){int-n;n=atoi(argv[1]);return multiply(n)}如果你想编辑你的问题,请单击编辑按钮,不要发表评论。另外,你应该解释它到底是如何工作的。预期的行为是什么?代码实际上是做什么的?不,使用
    argv[1]
    并不特别可疑
    argv[0]
    指向表示程序名的字符串
    argv[1]
    指向第一个命令行参数。(请注意,
    argv[1]
    如果没有提供参数,将是一个空指针;您需要检查这一点,可能是通过检查
    argc
    的值)顺便说一句,ISO C标准不需要原型;根据1999年的标准,任何调用都需要一个可见的声明,但该声明不需要是原型(即,它不需要指定参数类型)。但标准头中的所有函数声明都是原型。
    printf("%d\n", multiply(n));
    
    n = atoi(argv[1]);