Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

278
Views
Diferencia entre int x = 5; y entero x = {5}

Ambas declaraciones funcionan de la misma manera:

 int x = 5;
 int x = {5};

Eso también es cierto cuando intento:

 char str[] = "hello";
 char str[] = {"hello"};

¿Cómo define el lenguaje inicializar una variable usando llaves?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Hay tres casos diferentes de inicialización que se aplican aquí:

  • Para variables/punteros simples, llamados formalmente escalares , entonces C17 6.7.9 §11 dice que puede agregar llaves opcionalmente si lo desea:

    El inicializador de un escalar será una sola expresión, opcionalmente encerrada entre llaves.

  • Luego, §14 menciona específicamente las matrices de caracteres: se pueden inicializar con un literal de cadena. Y nuevamente, opcionalmente pueden tener llaves:

    Una matriz de tipo de carácter se puede inicializar mediante un literal de cadena de caracteres o un literal de cadena UTF–8, opcionalmente encerrado entre llaves.

  • Finalmente, §16 se ocupa de todos los demás inicializadores de agregados (matrices o estructuras) y uniones, las llaves ya no son opcionales sino obligatorias:

    De lo contrario, el inicializador para un objeto que tiene un tipo agregado o unión será una lista de inicializadores entre llaves para los elementos o miembros nombrados.

Esto hace posible escribir todas las listas de inicializadores con una sintaxis consistente y usando {} sin importar qué tipo esté inicializando la lista de inicializadores. Lo que a su vez puede ser útil al escribir macros de tipo genérico y similares.

over 4 years ago · Santiago Trujillo Report

0

No hay diferencia. En el estándar C11, §6.7.9p11 describe este caso:

El inicializador de un escalar será una sola expresión, opcionalmente encerrada entre llaves. El valor inicial del objeto es el de la expresión (después de la conversión); se aplican las mismas restricciones de tipo y conversiones que para la asignación simple, tomando el tipo del escalar como la versión no calificada de su tipo declarado.

Tanto el número entero como el puntero son tipos escalares (ver §6.2.5p21 ).

(Es lo mismo en C89 , el documento no es tan bueno para enlazar).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!