专升本 C语言笔记-05 常量定义 #define宏定义 const关键字 enum关键字

news/2024/7/7 19:37:25

1.宏定义 #define的使用

1.1.宏定义的概念

宏定义就是用一个标识符来表示一个字符串,如果后面代码出现了该标识符,那么就全部替换成指定的字符串

1.2.宏定义实现案例

#include <stdio.h>
#define N 123
int main()
{
    printf("N = %d\n",N);
    printf("N + N = %d\n",N+N);
    return 0;
}

 

注意

这里 N 不是变量,N是一个常量不可被修改

1.3.使用宏定义常见的错误

我们这里写了一个宏定义,求两个数的乘积

#include <stdio.h>
#define mul(a,b) a * b
int main()
{
    printf("A = %d\n",mul(3 + 2, 3 - 2));
    printf("B = %d\n",mul(5, 1));
    return 0;
}

很多小伙伴在写程序或者考试中,在这里栽跟头难以察觉,以为自己算数算错了

但我们把程序展开来看就一目了然

mul(3 + 2, 3 - 2) = 3 + 2 * 3 - 2

改正程序,分别给a b加上括号就可以了

#define mul(a,b) (a) * (b)

 

2.const关键字

const的作用

关键字const用来定义常量,如果被const修饰,那么该标识符为一个常量,它的值就不能再被改变

例:

        

这段程序中,n被const修饰后,我们想重新赋值,就发生了报错

const的不安全性

和宏定义#define的区别是,const类型并非绝对无法修改,当我们使用指针指向const修饰的变量,仍然可以重新赋值

例:

int main()
{
    const int n = 10;
    int * p = &n;
    *p = 666;
    printf("n = %d",n);
    return 0;
}

3.enum 枚举常量

enum 标识符{常量}

enum order{
    A,B,C = 66,D,E,F
};

枚举类型,默认第1个值从0开始,后面逐次增加如果中间有赋值操作,那么从赋值位置开始,后面依然逐次增加,D的值是67,E的值是68...

 注意:

 枚举类型不可以直接赋值
例:enum order{A = 'a'}; 这个相当于新建了一个枚举类型,与原本的无关

枚举类型支持
只能使用int类型,多数编译器默认enum型长度等于int型,这里小编测试的长度是4个字节


http://lihuaxi.xjx100.cn/news/2090678.html

相关文章

resetFields()失效

问题描述 先点击新增&#xff0c;再取消弹窗。resetFields()正常运行&#xff0c;清空表单内容。先点击编辑&#xff0c;再新增&#xff0c;表单内容不能清空。 解决方法 在nextTick里赋值表单内容&#xff0c;因为弹窗会把第一次赋值的内容当成初始值&#xff0c;所以要在弹…

组态软件与西门子S7系列PLC及三菱PLC间的无线通信测试

组态软件与西门子S7系列PLC及三菱PLC间的无线通信测试需要用到以下设备&#xff1a; l 西门子PLC型号&#xff1a;S7-200Smart 2台 l 三菱PLC型号&#xff1a;FX5U 2台 l 上位机&#xff1a;力控V7.1 1台 l 无线通讯终端&#xff08;网口版&#xff09;——DTD418MB 3块…

二分搜索树和AVL树

问题 跑道预订系统。一个飞机场只有一个飞机跑道&#xff0c;需要为未来的飞机着陆预留空闲的跑道。飞机预订的着陆时间为t&#xff0c;假如没有其他的计划在(t-k,tk)的时间内着陆的飞机&#xff0c;则将t加入集合R。其中k是变量。请问有没有一种时间复杂度为O(logn)的算法解决…

九州金榜|小学生产生厌学应该怎么办?

随着寒假结束&#xff0c;孩子们也步入的正常校园生活&#xff0c;现在孩子们开学已经三周了&#xff0c;可是孩子很多孩子进入不了学习状态&#xff0c;尤其是小学生&#xff0c;还沉寂在假期中&#xff0c;孩子不想学习&#xff0c;其实这是孩子厌学的一中表现&#xff0c;很…

淘宝商品详情数据采集(商品属性,规格,价格,详情图等)

淘宝商品详情数据采集是一个涉及多个步骤的过程&#xff0c;主要目的是获取商品的各种详细信息&#xff0c;如商品属性、规格、价格、详情图等。以下是一个基本的采集流程&#xff1a; 确定采集目标&#xff1a;首先&#xff0c;需要明确要采集的淘宝商品范围&#xff0c;例如…

揭秘FastStone Capture:一款强大且高效的截图工具

目录 【引子】【FastStone Capture概述】【安装步骤】【使用攻略】【核心功能解析】【总结】 【引子】 在数字化信息时代&#xff0c;无论是工作汇报、在线教学&#xff0c;还是日常交流中&#xff0c;屏幕截图已经成为我们必不可少的辅助工具。今天&#xff0c;我要为大家详细…

中国电子学会2022年9月份青少年软件编程Sc ratch图形化等级考试试卷四级真题

1.运行下列程序&#xff0c;说法正确的是&#xff1f; A&#xff1a;列表中的数字全部小于11 B&#xff1a;列表的长度为10 C&#xff1a;变量i最终值为20 D&#xff1a;列表中有大于10的数字 2.按钮Button3的当前造型为第2个造型&#xff0c;运行下列程序&#xff0c;正确…

Vue 中如何进行非父子组件通信?

说在前面 &#x1f388;在构建复杂的 Vue 应用程序时&#xff0c;我们经常会遇到需要在非直接父子关系的组件之间进行通信的情况。本文将深入探讨 Vue 提供的多种非父子组件通信方法&#xff0c;并提供实用的代码示例和应用场景。 常见通信方法 在 Vue.js 中&#xff0c;非父子…