这个c语言代码有什么问题?

时间:2013-04-08 16:59:06

标签: c compiler-errors void

我已编写此代码以置换任何数字,并出现以下错误: 在函数'int main()'中: 无效使用void表达式

#include <stdio.h>
#include <stdlib.h>

typedef unsigned long int uint;   
uint t[11],n;

void permute(uint k) {      
   uint i,c;

  if (1==k) {    
     for (i=n; i>0; --i)

     printf("%d", t[i]);  
     printf("\n"); 
  } 
  else 
  {    
    permute(k-1);   
    for (i=1; i<k; ++i)
    {   
      c=t[i]; t[i]=t[k]; t[k]=c;    
      permute(k-1);    
      c=t[i]; t[i]=t[k]; t[k]=c;}
    }
 }

 void run(uint x)
 {    
    n=0;
    while (x>0)
    {    
       t[++n]=x%10;    
       x /= 10;
    }    
    permute(n);
}

int main () 
{  
    printf ("%d\n",run(125)); 
}

3 个答案:

答案 0 :(得分:3)

printf ("%d\n",run(125));

您正在使用函数run的返回值,但run不返回任何内容

void run(uint x)

void表示函数不返回任何内容,

答案 1 :(得分:1)

您已声明以void run( uint x)运行,但您将其作为参数传递给printf(),它希望它返回一个整数值以匹配"%d\n"格式字符串。< / p>

答案 2 :(得分:0)

run返回void,当它没有返回任何值时,您无法从函数run“提取”一个整数。这是无效的。