×

c语言常量表达式 整型常量 常量表达式

c语言中什么是整型常量表达式?c++的合法常量有什么要求

admin admin 发表于2022-06-16 21:29:40 浏览119 评论0

抢沙发发表评论

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;因此, 你可以简单的试试用一个表达式去定义一个数组, 如果数组可以正常定义, 这表明这是一个整形表达式.


另外, 在C中, const关键字并不是代表其所修饰的变量是常量. 他仅仅代表const 修饰的变量是read-only的, 无法对他进行修改. 这点与C++不同, C++中const关键字可以定义一个整形常量, 因此-c语言常量表达式

    const int size = 10;

    int array[size]; /* C语言中, 编译不通过, C++中可以通过 */


c++的合法常量有什么要求


合法常量, (1)常量书写格式正确,(2)常量数值在允许范围以内,不可超界。
例如:
整型:123,-123, 007 (八进制),0x00ff (十六进制)
长整型:456, 456L
浮点型: 1.234, -5.678, 1e-05
字符常量,: ’a’,’Z’,’\0’,
字符串:“123abc“
-整型常量

什么是常量表达式


举例:

int n = 1; //这是确定无疑的,1是常量表达式,不可能变化

另一个例子:

int x = n + 1; //编译器并不能根据这句就推断出x一定等于2,因为极有可能在其他地方改变n的值,因此编译器就不敢保证它是常量