Вопрос по c++, c – C / C ++ va_list неправильно возвращает аргументы

4

У меня проблема с использованием va_list. Приведенный ниже код работает для int:

main() {
  int f1=1;
  float** m = function(n,f1);
}

float** function(int n,...) {

  va_list mem_list;
  va_start(mem_list, n);
  for (int i=0;i<n;i++) {
    for (int j=0;j<n;j++) {
      //m[i][j]=va_arg(mem_list,float);
      int f = va_arg(mem_list,int);
      printf("%i \n",f);
    }
  }

  va_end(mem_list);
  return NULL;
}

Однако, когда я перехожу на поплавок, т.е.

float f1=1.0;
float f = va_arg(mem_list,float);
printf("%f \n",f);

Он не возвращает правильное значение (значение равно 0,00000). Я очень смущен тем, что происходит.

Ваш Ответ

2   ответа
2

std::initializer_list<T>T

 void function(std::initializer_list<int> list);

size() which returns how many elements are in the list and begin() and end() which return iterators as usual

void function(std::initializer_list<int> list) {
    std::cout << "Gonna print " << list.size() << " integers:\n";

    bool first = true;
    for (int i: list) {
        if (first) { first = false; } else { std::cout << ", "; }
        std::cout << i;
    }
    std::cout << "\n";
}

int main() {
    function({1, 2, 3, 4, 5});
}

Gonna print 5 integers:
1, 2, 3, 4, 5

Error: User Rate Limit Exceeded user1422573
Error: User Rate Limit Exceeded user1422573
Error: User Rate Limit Exceeded
8

floatdoubledoublefloat%fprintf()floatdouble.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded user1422573

Похожие вопросы