varias superponer studio modificar lineas hacer graficos grafico graficas ejes dispersion como c standards c99 c89

studio - superponer graficas en r



¿Realmente se requiere que "int" sea al menos tan grande como "corto" en C? (3)

He leído un par de veces en diferentes fuentes (por ejemplo, Wikipedia: http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Size ), que en C, un largo largo no es más pequeño que un largo, que no es más pequeño que un int, que no es más pequeño que un short.

Sin embargo, he buscado esto en los estándares C90 y C99, y no he encontrado una cláusula correspondiente. Solo he encontrado que C90 y C99 especifican los tamaños mínimos de tipo (Sección 5.2.4.2.1 en los estándares C90 y C99), pero no sus tamaños entre sí. ¿Me he perdido algo en los estándares?


6.3.1.1 define los rangos relativos de conversión de enteros de cualquiera de los dos tipos de enteros. Este es un concepto abstracto que solo pretende definir la relación entre dos tipos; No hay ningún valor definido como el rango de ningún tipo.

6.2.5p8 dice:

Para cualquiera de los dos tipos de enteros con la misma signatura y diferente rango de conversión de entero (ver 6.3.1.1), el rango de valores del tipo con menor rango de conversión de entero es un subrango de los valores del otro tipo.

No dice nada sobre sus tamaños relativos, y de hecho es teóricamente posible que una implementación conforme (pero deliberadamente perversa) tenga sizeof (short) > sizeof (int) . Esto es posible solo si short tiene más bits de relleno (bits que no contribuyen al valor) que int . Esto es muy improbable; la mayoría de las implementaciones no tienen bits de relleno, y no conozco implementaciones en las que las relaciones de los rangos de los tipos de enteros difieran de las relaciones de sus tamaños.

Referencia: N1256 , el último borrador de C99, o N1570 , el último borrador de C2011.


Desde el N1570

6.3.1.1/1

- El rango de long largo int será mayor que el rango de long int , que será mayor que el rango de int , que será mayor que el rango de int corto , que será mayor que el rango de char firmado .


Supongo que el artículo de Wikipedia se refiere al rango de valores de esos tipos de enteros, en lugar de a su tamaño (según lo informado por sizeof ).

A partir del N1256 :

6.3.1.1/1

El rango de long long int será mayor que el rango de long int , que será mayor que el rango de int , que será mayor que el rango de short int , que será mayor que el rango de signed char .

6.2.5 / 8

Para cualquiera de los dos tipos de enteros con la misma signatura y diferente rango de conversión de entero (ver 6.3.1.1), el rango de valores del tipo con menor rango de conversión de entero es un subrango de los valores del otro tipo.