精华内容
下载资源
问答
  • 但是大概意思应该是为什么不用整数常量来直接表示某个数字而使用符号常量预定义 整数常量: int c = 3 符号常量: #define number 3 int c = number 这两个代码的优缺点区别 解释 符号常量是一个常量,是变量,...

    这个问题的前提不明
    但是大概意思应该是为什么不用整数常量来直接表示某个数字而使用符号常量预定义

    整数常量:

    int c = 3
    

    符号常量:

    #define number 3
    int c = number
    

    这两个代码的优缺点区别

    解释

    符号常量是一个常量,是不变量,所以,在编译的时候,就把符号常量出现的地方,替换为符号常量对应的常量。符号常量一般用户定义一个全局使用的数据,而且要改变该数据的时候,只需要改变符号常量的值,代码中引用符号常量的地方,都会把值相应修改过来。
    就如在C语言的例子:
    #define I_love_you 521
    这条语句说明会在之后的编译中将l_love_you 自动替换成521,而整数常量需要在代码中全部修改一遍,一旦需要修改非常麻烦

    展开全文
  • 为什么C标识符不能数字开头

    千次阅读 2018-03-27 15:36:02
    C语言的标识符在不与已有函数名(系统或者自定义),关键字重复的情况下,可以使用数字,字母(区分大小写)和下划线构成,如Wanvote123,但是不能数字开头,这是为什么呢。 根据网上的资料和自己的理解,这是为了...

           C语言的标识符不能与已有函数名(系统或者自定义)、关键字重复的前提下,可以由数字,字母(区分大小写)和下划线构成,如Wanvote_123,但是有一条:不能以数字开头

           实际上,除了C,大部分编程语言命名规范中都有这么一条:不能以数字开头,这是为什么?

           根据网上的资料和自己的理解——这是为了方便区分标识符和常量,从而便于编译器编译。

           不妨先思考一下:如果允许数字开头命名标识符,那么如2E3这样的字面量既可以表示变量(标识符),也可以表示常量:2*10^3。同样地,0x7C7D(16进制数),015(8进制数),0x45Lu(16进制无符号长整型)均具有二义性。

           况且,C语言规定标识符命名只能用这三种字符(数字,字母(区分大小写)和下划线),但是并没有规定一个变量中三种字符的个数,“_”(2个下划线,亲测有效),"___"(3个下划线,亲测有效),"aabb"这样的变量名都是有效的。将这条规则应用到以上场景中去:支持以数字开头并且不限制个数,那么“123”这样的字符也是合法的变量名(标识符),这样一来所有的数字常量都可能看做变量(标识符),这在编译器编译时会引起混乱。

           当然,为了解决这个问题,理论上我们可以规定:变量可以以数字开头,但不能全是数字不能和“0x7C7D”,"2E3"等计数法格式相同,不能...等等,即精心设计一套命名规则——既支持以数字开头,又与已有的常量表示法互斥。显然,这样做的开销太大,并且对于程序员记忆负担过重:想一想,如果真的有这么一套支持数字开头的变量表示法,你会冒着和常量冲突的风险去记忆和使用吗?与其这样,还不如干脆不支持以数字开头命名变量(标识符)。(其实C的设计者们是不是先设计了常量的表示法,然后再在它的余集中选择相对简单的变量命名法则呢?)

           所以,综上,以数字开头的标识符表示法与C支持的常量表示法有重合的部分,编译时会产生二义性;即使重新设计支持以数字开头的变量命名法则,用于区分变量/常量的开销也太大,得不偿失,故不支持以数字开头。

     

          声明:除已注明的引用外,文章系作者原创,引用转载请注明出处,如有必要请联系作者。

    展开全文
  • Linux Shell编程(13)——数字常量

    千次阅读 2014-09-30 07:34:49
    一个数用内嵌的#来求值则看成BASE#NUMBER(有范围和符号限制)例子:数字常量的表示法#!/bin/bash# numbers.sh: 不同基数的数字表示法.# 十进制数: 它是默认的let "dec = 32"echo "decimal number = $
    除非一个数字有特别的前缀或符号,否则shell脚本把它当成十进制的数。一个前缀为0的数字是八进制数。一个前缀为0x的数字是十六进制数。一个数用内嵌的#来求值则看成BASE#NUMBER(有范围和符号限制)
    


    例子:数字常量的表示法


    #!/bin/bash
    # numbers.sh: 不同基数的数字表示法.
    
    
    # 十进制数: 它是默认的
    let "dec = 32"
    echo "decimal number = $dec"             # 32
    # 这儿没有什么特别的.
    
    
    
    
    # 八进制数: 以'0'(零)为前缀
    let "oct = 032"
    echo "octal number = $oct"               # 26
    # 结果表示为十进制.
    # --------- ------ -- -------
    
    
    # 十六进制: 以'0x'或'0X'为前缀
    let "hex = 0x32"
    echo "hexadecimal number = $hex"         # 50
    # 以十进制的形式表示.
    
    
    # 其他的进制的表示形式: BASE#NUMBER
    # BASE值在2和64之间.
    # NUMBER必须使用在BASE范围内的符号,看下面的示例.
    
    
    
    
    let "bin = 2#111100111001101"
    echo "binary number = $bin"              # 31181
    
    
    let "b32 = 32#77"
    echo "base-32 number = $b32"             # 231
    
    
    let "b64 = 64#@_"
    echo "base-64 number = $b64"             # 4031
    # 这个符号只能工作在ASCII码值为2-64的范围限制.
    # 10个数字+26个小写字母+26个大写字母+ @ + _
    
    
    
    
    echo
    
    
    echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))
                                             # 1295 170 44822 3375
    
    
    
    
    #  重要提示:
    #  --------------
    #  使用一个超出给定进制的数字将会引起一个错误信息。
    #+ gives an error message.
    
    
    let "bad_oct = 081"
    # ((部分的) 错误信息输出:
    #  bad_oct = 081: value too great for base (error token is "081")
    #              八进制数字只能使用数字0-7.
    
    
    exit 0


    展开全文
  • 字符常量有两种:一种是普通字符,即用单撇号括起来的一个字符,如'b','y','?...相关推荐:《常见问题》使用字符常量需要注意以下几点:(1)字符常量只能用单撇号括起来,不能使用单引号或其他括号。...

    3dc9c81c2aaff2ae162821c52ebce640.png

    字符常量有两种:

    一种是普通字符,即用单撇号括起来的一个字符,如'b','y','?'。字符常量在储存在计算机的储存单元中时,是以其代码(一般采用ASCII代码)储存的。另一种是转义字符,即特殊字符常量。转移字符是C语言中表示字符的一种特殊形式,其含义是将反斜杠后面的字符转换成另外的意义。

    ecdd7995086afc50ac3a90541b02e103.png

    相关推荐:《常见问题》

    使用字符常量需要注意以下几点:

    (1)字符常量只能用单撇号括起来,不能使用单引号或其他括号。

    (2)字符常量中只能包括一个字符,不能是字符串。

    (3)字符常量是区分大小写的。

    (4)单撇号只是界限符,不属于字符常量中旳一部分,字符常量只能是一个字符,不包括单撇号。

    (5)单撇号里面可以是数字、字母等C语言字符集中除’和\以外所有可现实的单个字符,但是数字被定义为字符之后则不能参与数值运算。

    合法的字符常量:

    A. ‘\084’//不合法,八进制没有8。

    B. ‘\x43’//合法。

    C. ‘ab’ //不合法,字符只能是一个。

    D. ‘\0’ //不合法,字符串不需要写结束符。

    不合法的字符常量:

    A. ‘\\n’

    B. ‘\\101’

    C. ‘xy’

    D. ‘\\t

    展开全文
  • 这是为了区分变量和常量变量命名可以以数字开头的情况下,无法区分以下内容是定义的变量还是常量:01,2E10。这会编译的时候造成二义性。...所以规定命名变量的时候不能数字开头。 ...
  • java中-128~127数字常量

    万次阅读 2018-06-17 13:38:55
    java中的自动装箱和自动拆箱是jdk1.5中出现的,可以程序编译期自动将基本数据类型转换包装类型。 有如下代码: public class Test{ public static void main(String... args){ Integer i1 = 128; Integer i...
  • 常量在什么时候被放入常量池?

    千次阅读 2018-01-30 16:57:13
    先来了解一下常量池,常量池分为方法区中的运行时常量池和class文件中的常量池,class文件中的常量编译时确定,其中包括符号引用和字面量(文本字符串,被声明final的变量的值),运行时,JVM从中读取数据到...
  • 那C变量为什么不能数字打头呢?你有想过这个问题吗?嘻嘻,这里我给你总结一下。(摘自各个网站) 1、通俗的说法: 假如变量名允许以数字开头的话,那么语法分析器解析一个全部为数字的字串的时候,就无法...
  • 为什么用C语言中const常量定义数组大小会报错?

    千次阅读 热门讨论 2019-05-21 23:31:54
    1.为什么用C语言中const常量定义数组大小会报错? c语言编程中我们这样定义数组时编译器回报一个错误 const int maxn = 10; int a[maxn]; //C程序报错 //error:variably modified 'a' at file scope **注:**...
  • Java8支持带下划线的数字常量

    千次阅读 2017-11-14 10:58:16
    D:\>jv8 p466_th1.java D:\>"C:\Program Files\Java\jdk1.8.0_112\bin\javac" p466_th1.java D:\>a\timer "C:\Program Files\Java\jdk1.8.0_112\bin\java" p466_th1 --编译成功 D:\>jv6 p466_th1.java ...
  • 高级Bash脚本编程指南(9):数字常量

    千次阅读 2013-05-06 19:00:10
    高级Bash脚本编程指南(9):数字常量 成于坚持,败于止步 shell脚本默认情况下都是把数字作为10进制数来处理, 除非这个数字采用了特殊的标记或者前缀. 如果数字以0开头的话那么就是8进制数. 如果数字以0x开头的话...
  • define定义常量加括号,不加括号区别

    千次阅读 2012-10-09 13:30:46
    #define ADD1 a+b #define ADD2 (a+b) void main() { int a=10; int b=20; // 你想计算(10+20)*3 int c, d; c = ADD1*3; d = ADD2*3; } 经过宏替换,就变成了下面...所以,括号比较好.
  • 且看我网上搜索出来的关于Java变量名的一段定义:“变量名是一个合法的标识符,它是字母、数字、下划线或美元符”$”的序列,Java对变量名区分大小写,变量名不能数字开头,而且不能为保留字。合法的变量名如:my...
  • 整型常量

    千次阅读 2020-02-28 18:19:10
    八进制整数:由数字0开头,后跟数字0~7表示。 十六进制整数:由0x或0X开头,后跟0~9,a~f,A~F表示。 3.3.19.1 vs2013查看整型常量 (1)代码部分 运行结果显示 3.3.19.2长整型常量:789L、017L、0x12aL...
  • 常量 1、概念 "常量"的广义概念是:‘变化的量’。常量是一个简单值的标识符(名字)。常量值被定义后,脚本的...(1) 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量需要 $ 修...
  • 常量常量表达式

    千次阅读 2013-08-31 14:56:25
    常量常量表达式  long型常量以L或者l结尾,有时候... 没有后缀的浮点数常量为double型;  有后缀F或者f的浮点数常量是float型,后缀L或者l表示long double型常量;  八进制和十六进制的常量也可以使用L和U后缀;
  • C# 常量

    千次阅读 2019-06-18 09:22:10
    所谓常量,就是程序的运行过程中其值不能被改变的量。常量的类型也可以是任何一种C#的数据类型。常量的定义格式:  const 常量数据类型 常量名(标识符)=常量值; 其中,const关键字表示声明一个常量,“常量名”...
  • PHP中的自定义常量与类常量

    千次阅读 2016-04-17 19:30:40
    常量一旦被定义,就不能被重新定义或者取消定义。 有两种定义方式: 用define()函数来定义常量 define('STATUS', 3); // 如果第三个参数设置true,则大小写敏感 echo STATUS; 用c
  • 据说从这里可以看到python的源代码点击打开链接https://github.com/python/cpython/blob/2.7/Modules/posixmodule.c#L327既如此,在加几个有关python 的链接吧,尽管我现在还太懂 ...
  • 数值常量

    千次阅读 2019-02-26 09:42:26
    常量可分为5类:它们分别是 整形常量 实型常量 字符常量 字符串常量 符号常量 (1)整形常量 如 100, 123, 0, -41 等 (2)实型常量 有两种表示形式 第一种,由数字和小数点组成 如123.01,0.345,-32.1,...
  • 整型常量和实型常量

    千次阅读 2016-05-26 11:44:05
    C 语言中,整型常量分为十进制整型常量、八进制整型常量和十六进制整型常量三种表示形式。 (1)十进制整型常量 这种常量只能出现 0~9 的数字,且可带正、负号。例如: 0 1 364 28 -34 (2)八进制整型常量 ...
  • 字面常量

    千次阅读 2018-07-30 18:30:18
    程序里面,基本数据类型赋值的结果值被称之字面常量,例如,int a = 10;这个10被称之字面常量 字面常量的类型: 1.整型字面常量 可以表示10进制、8进制(以0开头),16进制(以0x开头),无符号整型...
  • 浅谈Java接口中为什么只能定义常量

    千次阅读 2017-09-05 10:18:58
    抽象类是’完全’的类,相当于是接口和具体类的一个中间层.即满足接口的抽象,也满足具体的实现. 如果接口可以定义变量,但是接口中的方法又都是抽象的,接口中无法通过行为来修改属性。有的人会说了,没有关系,...
  • 常量表达式

    万次阅读 2017-11-20 22:51:42
    字面值:是一个不能改变的值,如数字、字符、字符串等。单引号内的是字符字面值,双引号内的是字符串字面值。 字面值类型(literal type):算数类型、引用和指针等。 常量表达式(const experssion):是指(1)值...
  • 之所以称之字面值是因为只能用它的值来称呼它,称之为常量是因为它的值不能修改。 对于字面值常量我们分为以下五种: 类别 示例 说明 整型 10、12 主要是有进制的区别,默认是十进制。 ...
  • 字符常量

    千次阅读 多人点赞 2017-10-13 14:21:01
    字符常量在储存计算机的储存单元中时,是以其代码(一般采用ASCII代码)储存的。 另一种是转义字符,即特殊字符常量。转移字符是C语言中表示字符的一种特殊形式,其含义是将反斜杠后面的字符转换成另外的意义。[1...
  • php常量的声明和使用

    千次阅读 2015-03-18 08:50:30
    常量可以理解值不变的量,常量被定义后,脚本的其他任何地方都不能改变,一个常量由英文字母,下划线,和数字组成,但是数字不能作为常量的首字母。 php中使用#define()函数来定义常量,该函数的语法格式如下...
  • JVM - Class常量池 || 运行时常量

    千次阅读 2020-07-13 00:40:27
    Class常量池我们可以理解是Class文件中的资源仓库。 Class文件中主要由两大部分 类的版本、字段、方法、接口等描述信息外, 常量池(constant pool table),用于存放编译期生成的各种字面量(Literal)和符号引用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 264,338
精华内容 105,735
关键字:

为什么不能在数字常量前加