¿Ctype.h todavía requiere caracteres sin firmar?

1 minuto de lectura

¿Ctypeh todavia requiere caracteres sin firmar
rwallace

Tradicionalmente, era – estrictamente hablando – un error pasar una signed char al ctype.h predicados porque solo se definieron para -1 a 255, por lo que -128 a -2 podría terminar leyendo fuera de los límites de la matriz.

¿Se arregló esto alguna vez, o todavía estrictamente hablando tienes que usar unsigned char para evitar un comportamiento indefinido en las versiones modernas de C?

  • Los programas modernos tienen cada vez más posibilidades de enfrentarse a caracteres en el rango 128-255, lo que se malinterpretaría como negativo si se viera como caracteres firmados, por lo que la respuesta es “más que nunca”.

    – Pascal Cuoq

    31 de julio de 2013 a las 22:42

¿Ctypeh todavia requiere caracteres sin firmar
Shafik Yaghmour

¿Hablando estrictamente, todavía tiene que usar caracteres sin firmar para evitar un comportamiento indefinido en las versiones modernas de C?

si, desde el Proyecto de norma C11 sección 7.4 Manejo de caracteres párrafo 1 dice (énfasis mío):

El encabezado declara varias funciones útiles para clasificar y mapear caracteres.198) En todos los casos el argumento es un int, cuyo valor se podrá representar como un carácter sin firmar o será igual al valor de la macro EOF. Si el argumento tiene cualquier otro valor, el comportamiento es indefinido.

Esto también vale para borrador del estándar C99 además, puedes encontrarlo en la misma sección.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad