‘壹’ C语言中什么是整型常量
整形常量表达式指的是表达式中的操作数都是整数类型的, 这里的整数类型不仅仅是int类型, 还包括char, (unsigned) short, (unsigned) long等类型. 整型常量表达式中的操作数在编译时就已经确定了他的值, 因此只需要关注哪些值在编译时确定就可以了. 这包括以下几种情况:
1.
单个字符, 比如'A', 'a'
2.
单个整数数字以及由整数数字构成的表达式, 如123, 123 + 345
3.
枚举常量
4.
有sizeof 运算法返回的值, 如sizeof(int)
5.
NULL指针值
6.
地址常量. 如0X12345678, 以及地址常量加上一个偏移
在C90和C++中, 静态数组定义时, 需要提供整形常量表达式. 如int A[10];因此, 你可以简单的试试用一个表达式去定义一个数组, 如果数组可以正常定义, 这表明这是一个整形表达式.
另外, 在C中, const关键字并不是代表其所修饰的变量是常量. 他仅仅代表const 修饰的变量是read-only的, 无法对他进行修改. 这点与C++不同, C++中const关键字可以定义一个整形常量, 因此
const int size = 10;
int array[size]; /* C语言中, 编译不通过, C++中可以通过 */
‘贰’ C语言中是如何定义常量的啊
我们在用C编程时有时需要定义不变的变量,即常量,有两种方法。
例如:
定义常量PI的两种方式:
1. #define Pi 3.1415926f;
2. const float pi 3.1415926f;
常量有整型常量、浮点型常量、字符型常量及字符串常量。 ‘
常量定义是指定义符号常量,用一个标识符来代表一个常量,通过宏定义预处理指令来实现。
格式:#define标识符常量
由用户命名的标识符是符号常量名。作为符号常量名,一般大写。一旦定义,在程序中凡是出现常量的地方均可用符号常量名来代替。
对使用了符号常量的程序在编译前会以实际常量替代符号常量。
全局变量和局部变量的区别:
‘叁’ C语言中整型常量有几种形式,它们是如何表示的
在C语言中,整型常量有三种书写形式:
(1) 十进制整数。十进制整数就是通常整数的写法。例如:11、15、21等。
(2) 八进制整数。八进制整数的书写形式是在通常八进制整数的前面加一个数字0。例如:00、0111、015、021等,它们分别表示十进制整数:0、73、13、17
(3) 十六进制整数。十六进制整数的书写形式是在通常十六进制整数的前面加0x。例如:0x0、0x111、0x15、0x21等,它们分别表示十进制整数0、273、21、33。
注意,整型常量前面没有+或者-,-10其实是一元-运算符和操作数10,同样整型常量的十进制表示并没有0,单独写一个0其实是一个八进制常量。
(3)整型常量怎么编译扩展阅读
转换为整型
要明示地将一个值转换为 integer,用 (int) 或 (integer)强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。您还可以通过函数 intval() 来将一个值转换成整型。
1、从布尔值转换
FALSE 将产生出0(零),TRUE 将产生出1(壹)。
2、从浮点数转换
当从浮点数转换成整数时,数字将被取整(丢弃小数位)。
注意:如果浮点数超出了整数范围(通常为 +/- 2.15e+9 = 2^31),则结果不确定,因为没有足够的精度使浮点数给出一个确切的整数结果。在此情况下没有警告,甚至没有任何通知!
注:在 Linux 下返回结果是最小负数(-214748),而在 Windows 下返回结果是零(0)。
【以下以C/C++语言为例,陈述一下整型的知识】:
a、C/C++对整型长度的规定是为了执行效率,将int定义为机器字长可以取得最大的执行速度;
b、C/C++中整型包括:int,char和enum,C++中还包含bool类型,C99中bool是一个宏,实际为_Bool;
c、C和C++对enum的规定有所不同,这里不描述;
d、修饰整型正负的有signed和unsigned,对于int默认为signed;
e、修饰 int 大小的有short和long,部分编译器还扩展了一些更长的整型,比如long long和__int64, C99中增加了long long和unsigned long long;
f、int 的长度与机器字长相同,16位的编译器上int长16位,32位的编译器上int长32位;
g、short int的长度小于等于int 的长度,注意它们可能长度相等,这取决于编译器;
h、long int 的长度大于等于int 的长度,注意它们可能长度相等,这取决于编译器;
i、char 的长度应当可以包容得下一个字符,大部分系统中就是一个字节,而有的系统中可能是4个字节,因为这些系统中一个字符需要四个字节来描述;
j、char 的正负取决于编译器,而编译器的决定取决于操作系统,在不同的编译器中char可能等同于signed char,也可能等同于unsigned char。
参考资料来源:网络-整型
参考资料来源:网络-整型常量