Estoy tratando de incrementar un elemento de matriz de caracteres inicializado a cero pero no puedo, ¿por qué?

#include
int main ()
{
char a [2] = {0}; // inicializa ambos elementos a cero
printf (“a [0] =% da [1] =% d”, a [0], a [1]); // imprime en formato entero
printf (“\ na [0] =% ca [1] =% c”, a [0], a [1]); // imprime en formato char
a [1] = a [1] +1; // incrementa en 1
printf (“\ n =============================”);
printf (“\ na [0] =% da [1] =% d”, a [0], a [1]);
printf (“\ na [0] =% ca [1] =% c”, a [0], a [1]);
devuelve 0;
}
/ *****************
a [0] = 0 a [1] = 0
a [0] = a [1] =
========================
a [0] = 0 a [1] = 1
a [0] = a [1] =
***************** /

Considere el programa y la salida anteriores. Los caracteres se implementan como números enteros. La implementación de la memoria del tipo de datos char es en términos del código numérico (CÓDIGO ASCII). Por lo tanto, se dice que los caracteres se implementan como otro tipo de datos entero.

Ahora, cuando intentamos imprimir el código ASCII 1, da espacio en blanco, esto se debe a que es un carácter especial no imprimible llamado carácter de “inicio de encabezado”. Ver códigos de caracteres ASCII. Entonces, si desea ver la salida a[1]=1 use% d en lugar de% c. Espero que esto explique.

Hola,

Veamos tu código una vez más.

char a [2] = {0}; // esto crea una matriz, a, donde el primer elemento es 0
a [1] = a [1] +1; // esto aumenta el valor a [1]

Entonces no hay error en el programa. Puede cambiar el programa como

#include

int main (nulo) {
char a [2] = {0,0,0};
a [1] = a [1] +1;
printf (“% d”, a [1]);
devuelve 0;
}

Esto funcionó bien para mí.

Debe dar el formato como ‘% d’ durante la impresión.

Espero que esto ayude

Gracias.

Tu código se ve perfectamente bien. Y al final de la ejecución de ambas líneas, su a[1] contendrá el valor 1 . char a[2] = {0}; inicializará ambos elementos con cero y a[1]=a[1]+1; incrementará el segundo elemento en 1 .

Pero tenga en cuenta que el valor de carácter 1 no es el mismo que el código de caracteres para '1' . Entonces, si lo imprime con putchar o una función similar o con el especificador de formato %c de printf , es posible que no vea nada o algún carácter extraño en la pantalla. Si desea imprimir 1 , use el especificador %d en printf como: (Ideone.com)

printf (“a [1] =% d \ n”, a [1]);

Una pregunta similar de stackoverflow: salida extraña de putchar (), ¿por qué está sucediendo esto?

More Interesting

¿Cuál es la mejor manera de procesar consultas de accesibilidad en un DAG con restricciones?

¿Qué tipo de algoritmo de programación de CPU se utiliza actualmente en los sistemas operativos?

¿Puede la búsqueda de profundización iterativa encontrar una solución más rápida que A * en algunos casos?

¿Cuál es la diferencia entre usar <y <= en la búsqueda binaria?

¿Cuáles son los algoritmos criptográficos básicos que un programador debe saber?

¿Cuál es tu algoritmo favorito y dónde lo has usado prácticamente en la vida real?

¿Son los algoritmos genéticos en sí mismos una forma de inteligencia artificial?

¿Qué algoritmos se pueden usar para encontrar un objeto similar en una base de datos que contenga múltiples atributos, numéricos, categóricos y no categóricos?

¿Cuántas veces se realiza la comparación [código] i> = n [/ código] en el siguiente programa? [código] int i = 200, n = 110; main () {while (i> = n) {i = i-1; n = n + 1;}} [/ código]

¿Los programadores realmente implementan los algoritmos, o usan los que se dan en las bibliotecas? (como usar HashMap en Java)

¿Vale la pena publicar mi algoritmo?

¿Cuál es el mejor algoritmo de detección de colisión de vehículos?

¿Es necesario pensar en una solución recursiva primero antes de proceder a resolver un problema de DP?

Entre C # y Java, ¿cuál es el mejor lenguaje de programación para aprender programación orientada a objetos, estructuras de datos y algoritmos? ¿Por qué?

Modelo similar: ¿Cuál es el mejor algoritmo para usar en grandes conjuntos de datos?