C语言:函数中float和void之间的差异

时间:2015-04-14 00:34:23

标签: java c void

我正在学习如何使用C语言中的功能但我无法理解为什么会这样:

    float TableauDebut(float size[], float poi[], char sex[], int nbElem)
{
    int i;
    for(i=0; i < nbElem; i++){
    printf("  %d)%.2f  %.2f  ", i, size[i], poi[i]);
    switch(sex[i]){
        case 'F': printf("Woman\n"); break;
        case 'M': printf("Man\n"); break;
    }
}

显示我的表格以及使用 void

但是当我尝试在Java中做同样的事情时:

static void TableauDebut(double [] size, double [] poi, char [] sex, int nbElem)
{

    int i;
    for(i=0; i < nbElem; i++){
    System.out.printf("  %d)%.2f  %.2f  ", i, size[i], poi[i]);
    switch(sex[i]){
        case 'F': System.out.printf("Femme\n"); break;
        case 'M': System.out.printf("Homme\n"); break;
    }
}

我可以使用 void 而不是 double

在C语言中使用float和void之间的区别是什么以及为什么我在Java中不能这样做?

1 个答案:

答案 0 :(得分:4)

void返回类型表示您的函数没有返回值。其他任何意味着你的函数必须返回该类型的对象(或者,在适用的情况下, convertible 到该类型的东西。)

你的第一个例子承诺返回float但未能这样做。这是一个错误,但C编译器无需告诉您这一点。使用合适的编译器设置,您应该收到警告,但最重要的是,可以在C中编译这样一段错误的代码,运行它,并在运行时获取未定义的行为

Java可以防止这种情况,并且无法编译代码。