[英]syntax error : 'type'
int max(int N, ...){
int* x = &N;
x = x + 1;
int max = x[1];
for(int k = 1; k < N ; k += 1){
if(x[k] > max) {max = x[k];}
}
return max;
}
void main(){
//printf("%d", max(3));
}
我已經嘗試從一個關鍵解決方案中編譯上述代碼,但是我收到了錯誤語法錯誤:'type'這是怎么回事...
您的x = x + 1
不符合您的期望。
您需要使用stdarg.h
來處理變量參數。
聽起來您正在使用C89編譯器。 該代碼是為C99或C ++編譯器編寫的-要對其進行轉換,您需要將max
和k
的聲明移至函數頂部。
這是一種方法:
#include <stdarg.h>
#include <limits.h>
int max(int N, ...)
{
int big = INT_MIN;
int i;
va_list args;
va_start(args, N);
for (i = 0; i < N; i++)
{
int x = va_arg(args, int);
if (big < x)
big = x;
}
va_end(args);
return(big);
}
#include <stdio.h>
int main(void)
{
printf("%d\n", max(6, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(5, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(4, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(3, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(2, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(1, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(0, 1, 3, 5, 7, 9, 8));
return(0);
}
在gcc中編譯良好
gcc foo.c -std=c99
設置的選項為c99,以便聲明的for循環計數器運行良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.