标准C语言的常量分为 运行时常量(虽然只是表面上的) 、编译时常量(包括字面值),编译时常量是指编译器在编译代码时就可以确定的值, 如 123 就是字面值常量,编译时就可以确定值,直接生成二进制代码, 而 const long cl = 123 ,cl 就有可能是编译时常量,看编译器的优化程度,
运行时常量 是指 像
const long global = fun(); //fun() 是一个函数,
//返回一个 long 值,编译器不能在编译时确定 global 的值,
//这样的常量是表面上的,可以通过指针修改其值。
你说的 (long)123 是指不能作为 编译时常量吧。
(long)123 是否应该作为编译时常量,视编译器的优化程度,一般来说是可以作为常量的,比如
int b[(long)123]; //数组长度需要常量(C89代码),在 VC++2008就是可行的
longn=123;是可以的123l(最后一个是L不是1代表long型常量)也是可以的但(long)123是不可以的
(long)123是可用作c语言常量的。只是不能使用中文括号。
可以有长整型常数,写法不对,123L可以
用强制符操作的数据肯定不是常量呀!