es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Orden extraña de ejecución en Qt C++

Disculpas si ya se ha preguntado antes, pero no encontré ninguna respuesta. ¿Alguien puede iluminarme sobre qué está sucediendo aquí?

Estaba jugando con Qt y C++ estándar. Por lo tanto, el código de prueba a continuación no hizo lo que esperaba. ¿Está relacionado con la cola QCoreApplication? ¿Esperaba la secuencia de 1 2 3 4 5 antes de el tamaño del array es: 5 como la primera operación ejecutada?

Gracias por la ayuda.



#include <QCoreApplication> #include <QDebug> #include <iostream> #include <algorithm> #include <array> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << "hola"; std::array<int, 5> vals {1,2,3,4,5}; for (auto& v: vals) { qInfo() << v; } auto* vals_ptr = vals.data(); qInfo() << *(vals_ptr+1); qInfo() << *(vals_ptr+2); auto print = [](const int& n) { std::cout << " " << n; }; std::for_each(vals.cbegin(), vals.cend(), print); qInfo() << "el tamaño del array es: " << vals.size(); return a.exec(); }

Resultado abajo

1 2 3 4 5hola
1
2
3
4
5
2
3
el tamaño del array es: 5

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La salida es consistente con el código.

    La primera línea, “hello”, se imprime debido a la línea qDebug() << "hello";.

    Luego, el bucle for itera a través del array vals e imprime cada elemento (1, 2, 3, 4, 5).

    Después de eso, se acceden dos elementos específicos del array utilizando aritmética de punteros (*(vals_ptr+1) y *(vals_ptr+2)), y se imprimen sus valores (2 y 3).

    A continuación, se utiliza el algoritmo std::for_each para iterar de nuevo a través del array vals, pero esta vez se utiliza la función lambda print para imprimir cada elemento con un espacio en medio. Por lo tanto, la salida es “1 2 3 4 5”.

    Por último, el programa imprime “el tamaño del array es: 5”, que es el tamaño del array vals.

    No hay ningún problema relacionado con la cola de QCoreApplication en este código. El comportamiento visto en la salida es simplemente el resultado de la ejecución del código tal como está escrito.

Comments are closed.