变量函数处理参数的顺序相反,为什么?[重复]

问题描述 投票:0回答:1

我已经制作了一个小代码来处理一个可变数量的字符串,但不知怎么的,我得到了这些字符串的处理顺序是相反的.预期的输出是:Jolasd14; 实际输出是:asdJol14。Jolasd14; 实际输出是: asdJol14.

int Columna(int anchoColumna,...){
    va_list longitudCadena;
    va_start ( longitudCadena, anchoColumna );
    char caracter;
    do{
        caracter =va_arg ( longitudCadena, int );
        anchoColumna -= ( int ) caracter;
    } while ( caracter != '\0' );
    va_end ( longitudCadena );
    return anchoColumna;
}
int main ( int cantidadArgumentos, char** argumentos ) {
    printf("%d",Columna(20,printf("Jol"),printf("asd")));
    return 0;
}


EDIT:我尝试了一个类似的事情,只处理字符串,我得到了预期的输出。

ExpectedOutput

c printf variadic
1个回答
3
投票

顺序是 printf("Jol")printf("asd") 未指定执行。 它们都发生在 Columna() 被执行。

简单地执行它们是你想要的顺序之前的 Columna() 调用,传入各自的返回值。

int a = printf("Jol");
int b = printf("asd");
printf("%d",Columna(20,a,b);
© www.soinside.com 2019 - 2024. All rights reserved.