• 08 常量


    1,常量是固定值,在程序执行期间不能改变,这些固定的值,又叫做字面量

    2,常量可以是任何的基本数据类型,比如整数常量,浮点常量,字符常量,或字符串字面值,也有枚举常量

    3,常量的值在定义之后不能进行修改

    4,整数常量

      ①整数常量可以是十进制,八进制或十六进制的常量,前缀指定基数:0x或0X表示十六进制,0表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是U和L的组合,U表示无符号整数(unsigned),L表示长整数(long)。后缀可以是大写,也可以是小写,U和L的顺序任意。

      ②整数常量举例说明

        85     十进制

        0213    八进制

        0x4b    十六进制

        30     整数

        30u   无符号整数

        30l    长整数

        30ul  无符号长整数

    5,浮点常量

      ①浮点常量由整数部分,小数点,小数部分和指数部分组成。可以使用小数形式或者指数形式来表示浮点常量

      ②浮点常量举例:

        3.1415926     double常量

        3.14159E-5   科学计数法

        3.1f      float常量

    6,字符常量

      ①字符常量是括在单引号中的,例如,' x '可以存储在 char 类型的变量中,字符常量可以是一个普通的字符,也可以是一个转义序列(例如 ‘ ’)

      ②举例说明:

        'X'  'A'   'b'  '1'  ' '

    7,字符串常量

      ①字符串字面值或常量是括在双引号中的,一个字符串包含类似于字符常量的字符,普通的字符,转义序列,和通用的字符,可以使用空格做分隔符,把一个很长的字符串常量进行分行

      ②举例

        " hello world "

        " 北京 "

        " hello 

          world "

     1 #include<stdio.h>
     2 void main() {
     3     int n1 = 0213;  //八进制
     4     int n2 = 0X4b;  //十六进制
     5     char c1 = 'a';
     6     char c2 = '	';
     7     char str1[20] = "北京 hello";  //"北京 hello"字符串常量
     8     char str2[100] = "hello 
     9 world";    //等价  "hello world"
    10 
    11 
    12     printf("n1=%d  n2=%d  str1=%s  str2=%s", n1, n2, str1, str2);
    13 }

     8,常量的定义

      ①定义常量的两种方式:

        使用 #define 预处理器

        使用 const 关键字

      ②#define 预处理器

        #define 预处理器定义常量的形式

          #define 常量名  常量值 

     1 #include<stdio.h>
     2 
     3 #define PI 3.14  //定义常量值 PI 常量值 3.14
     4 int main() {
     5     double area;
     6     double r = 1.2; // 半径
     7     area = PI * r * r;
     8     printf("面积:%.2f", area);
     9     return 0;  //main函数前是 int ,需要返回值,所以为了符合语法,返回一个0
    10 }

        打印结果:

          面积:4.52

      ③const 关键字

        可以使用const 声明指定类型的常量

          const 数据类型  常量名 = 常量值 ; // 即就是一个语句 

    1 #include<stdio.h>
    2 
    3 const double PI = 3.14;  //const定义常量时,需要加分号
    4 int main() {
    5     double area;
    6     double r = 1.2;
    7     area = PI * r * r;
    8     printf("面积:%.2f", area);
    9 }

        打印结果:

          面积:4.52

      ④const 和 #define 的区别

        const 定义常量时,带类型,define 不带类型

        const 是在编译,运行的时候起作用,而define 是在编译的预处理阶段起作用

        define 只是简单的替换,没有类型检查,简单的字符串替换会导致边界效应

        const 常量可以进行调试的,define 是不能进行调试的,主要是预编译阶段就已经替换掉了,调试的时候就没它了

        const 不能重定义,不可以定义两个一样的,而define 通过 undef 取消某个符号的定义,再重新定义

        define 可以配合 #ifdef  #ifndef  #endif 来使用,可以让代码更加灵活,比如我们可以通过 #define 来启动或者关闭 调试信息。

      ⑤易错举例  

     1 #include<stdio.h>
     2 
     3 #define A 1
     4 #define B A+3
     5 void main() {
     6     // define 就是一个简单的替换
     7     double d1 = A / B * 3;
     8     printf("d1=%.2f", d1);   //10.00
     9 
    10     分析:
    11         d1=A/A+3*3=1+9=10
    12 }
     1 #include<stdio.h>
     2 #define A 1
     3 #define B (A+3)
     4 void main() {
     5     double d1 = A / B * 3;
     6     printf("d1=%.2f", d1);   //0.00
     7 
     8     分析:
     9         d1=A/(A+3)*3=1/4*3=0*3=0
    10 }

    若想得到 0.75 需要提升精度,令 A =1.0 即可

     1 #include<studio.h>
     2 #define DEBUG
     3 void main() {
     4 #ifdef DEBUG
     5     printf("ok,调试信息");
     6 #endif
     7 #ifndef DEBUG
     8     printf("hello,另外的信息");
     9 #endif
    10 }

    打印结果:

      ok,调试信息

  • 相关阅读:
    java fx example
    JavaFX 2.0+ WebView /WebEngine render web page to an image
    剑指Offer面试题41(Java版):和为s的两个数字VS和为s的连续正数序列
    时间类(时间戳的各种转换成)
    Android系统各种类型的service刨根解读
    二叉树的建立基本操作(链表方式)(一)
    从头认识java-13.2 利用元组的方式返回多类型对象
    EA初步使用
    inline-block元素设置overflow:hidden属性导致相邻行内元素向下偏移
    下拉框与列表框
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/12339909.html
Copyright © 2020-2023  润新知