我已经制作了一个小代码来处理一个可变数量的字符串,但不知怎么的,我得到了这些字符串的处理顺序是相反的.预期的输出是: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:我尝试了一个类似的事情,只处理字符串,我得到了预期的输出。
顺序是 printf("Jol")
和 printf("asd")
未指定执行。 它们都发生在 Columna()
被执行。
简单地执行它们是你想要的顺序之前的 Columna()
调用,传入各自的返回值。
int a = printf("Jol");
int b = printf("asd");
printf("%d",Columna(20,a,b);