Comillas simples vs comillas dobles en C o C++


¿Cuándo debo usar comillas simples y comillas dobles en la programación en C o C++?

Author: Jonathon Reinhart, 2010-09-10

12 answers

En C y en C++ las comillas simples identifican un solo carácter, mientras que las comillas dobles crean un literal de cadena. 'a' es un literal de carácter a simple, mientras que " a " es un literal de cadena que contiene una 'a' y un terminador nulo (es decir, un array de caracteres 2).

En C++ el tipo de un carácter literal es char, pero tenga en cuenta que en C, el tipo de un carácter literal es int, es decir sizeof 'a' es 4 en una arquitectura donde ints son 32bit (y CHAR_BIT es 8), mientras que sizeof(char) es 1 en todas partes.

 213
Author: David Rodríguez - dribeas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-11 13:18:19

Algunos compiladores también implementan una extensión, que permite constantes de varios caracteres. El estándar C99 dice:

6.4.4. 4p10: "El valor de una constante de carácter entero que contiene más de un carácter (por ejemplo, 'ab'), o contiene un carácter o escape secuencia que no se asigna a una carácter de ejecución de un solo byte, es implementación-definida."

Esto podría verse así, por ejemplo:

const uint32_t png_ihdr = 'IHDR';

La constante resultante (en GCC, que implementa esto) tiene el valor que obtienes al tomar cada personaje y cambiarlo hacia arriba, de modo que 'I' termina en los bits más significativos del valor de 32 bits. Obviamente, no debería confiar en esto si está escribiendo código independiente de la plataforma.

 38
Author: unwind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-18 01:17:47

Las comillas simples son caracteres (char), las comillas dobles son cadenas terminadas en cero (char *).

char c = 'x';
char *s = "Hello World";
 22
Author: Eiko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-10 09:45:51
  • 'x' es un entero que representa el valor numérico de la letra x en el conjunto de caracteres de la máquina
  • "x" es una matriz de caracteres, de dos caracteres de largo, compuesto por ‘x’ seguido de ‘\0’
 10
Author: martynas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-18 14:01:02

Estaba husmeando cosas como: int cc = 'cc'; sucede que es básicamente una copia en bytes a un entero. Por lo tanto, la forma de verlo es que 'cc', que es básicamente 2 c se copian a 2 bytes inferiores del entero cc. Si usted está buscando una trivia, entonces

printf("%d %d", 'c', 'cc'); would give:

99 25443

Eso es porque 25443 = 99 + 256*99

Así que 'cc' es una constante de varios caracteres y no una cadena.

Salud

 7
Author: sanket,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-13 16:31:43

Las comillas simples son para un solo carácter. Las comillas dobles son para una cadena (matriz de caracteres). Puede usar comillas simples para construir una cadena un carácter a la vez, si lo desea.

char myChar     = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
 6
Author: Graham Borland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-10 09:46:31
  1. {[0] } es para character;
  2. {[2] } es para string.
 6
Author: bygreencn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-07 10:22:28

Las comillas dobles son para literales de cadena, por ejemplo:

char str[] = "Hello world";

Las comillas simples son para literales de caracteres simples, por ejemplo:

char c = 'x';

EDIT Como David dijo en otra respuesta, el tipo de un carácter literal es int.

 5
Author: Oliver Charlesworth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-10 10:00:29

En C comillas simples como' a 'indican constantes de caracteres mientras que" a " es una matriz de caracteres, siempre terminada con el carácter 0

 5
Author: Jens Gustedt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-10 10:01:38

Las comillas simples denotan un carácter, las dobles denotan una cadena.

En Java, también es lo mismo.

 3
Author: adiggo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-22 15:21:51

Use comillas simples con caracteres simples como:

char ch = 'a';

Aquí 'a' es una constante char y es igual al valor ASCII de char a.

Use comillas dobles con cadenas como:

char str[] = "foo";

Aquí "foo" es un literal de cadena.

Está bien usar "a" pero no está bien usar ' foo'

 2
Author: codaddict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-10 09:50:04

La comilla simple se usa para el carácter, mientras que la comilla doble se usa para la cadena.

, Por ejemplo..

 printf("%c \n",'a');
 printf("%s","Hello World");

Salida

A Hello World

Si utiliza estos en caso viceversa y utiliza comillas simples para la cadena y comillas dobles para el carácter. Aquí, este será el resultado;

  printf("%c \n","a");
  printf("%s",'Hello World');

Salida:

Para la primera línea.Usted tendrá valor de basura o inesperado.o usted puede ser tener salida como esta..

Mientras que para la segunda declaración. Ya verás Nada. Una cosa más. Si tienes más declaración después de esto. Tampoco te darán ningún resultado.

Nota : el lenguaje PHP le da flexibilidad para usar comillas simples y dobles fácilmente.

 2
Author: Hafiz Shehbaz Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-11 13:57:18