首页 > 其他分享 >C语言中对象式宏

C语言中对象式宏

时间:2024-10-04 12:02:43浏览次数:6  
标签:对象 sum NUMBER C语言 int test root localhost

 

001、不使用对象式宏

[root@localhost test]# ls
test.c
[root@localhost test]# cat test.c                 ##  测试程序
#include <stdio.h>

int main(void)
{
        int i, sum = 0;
        int v[5] = {3, 8, 2, 4, 6};               ## 定义int【5】 型数组

        for(i = 0; i < 5; i++)
        {
                sum += v[i];
        }

        printf("sum = %5d\n", sum);
        printf("mean = %.5f\n", (double)sum/5);                     ## 求和和均值

        return 0;
}
[root@localhost test]# gcc test.c                                  ##  编译
[root@localhost test]# ls
a.out  test.c
[root@localhost test]# ./a.out                                      ## 执行程序
sum =    23
mean = 4.60000

 

002、使用对象式宏

[root@localhost test]# ls
test.c
[root@localhost test]# cat test.c                  ## 测试程序
#include <stdio.h>
#define NUMBER 5                                   // 定义对象式宏

int main(void)
{
        int i, sum = 0;
        int v[NUMBER] = {3, 8, 2, 4, 6};             //在程序中使用NUMBER宏

        for(i = 0; i < NUMBER; i++)
        {
                sum += v[i];
        }

        printf("sum = %5d\n", sum);
        printf("mean = %.5f\n", (double)sum/NUMBER);

        return 0;
}
[root@localhost test]# gcc test.c -o kkk                           ## 编译程序
[root@localhost test]# ls
kkk  test.c
[root@localhost test]# ./kkk         
sum =    23
mean = 4.60000

 。

对象式宏不就是个变量替换嘛?

 

003、替代方法

[root@localhost test]# ls
test.c
[root@localhost test]# cat test.c                     ## 测试程序
#include <stdio.h>

int main(void)
{
        int i, sum = 0;
        int NUMBER;
        NUMBER = 5;
        int v[NUMBER] = {3, 4, 5, 8, 3};           // 数组数量用变量无法进行初始化,为什么?  此处必须使用对象式宏, 优势?

        for(i = 0; i < NUMBER; i++)
        {
                sum += v[i];
        }

        printf("sum = %5d\n", sum);
        printf("mean = %.5f\n", (double)sum/NUMBER);

        return 0;
}
[root@localhost test]# gcc test.c -o kkk                             ## 无法正常编译
test.c: In function ‘main’:
test.c:8:9: error: variable-sized object may not be initialized
    8 |         int v[NUMBER] = {3, 4, 5, 8, 3};
      |         ^~~

 。

 

标签:对象,sum,NUMBER,C语言,int,test,root,localhost
From: https://www.cnblogs.com/liujiaxin2018/p/18446475

相关文章

  • 用建造者模式的思想改造构造方法。灵活,快捷的链式创建对象
    当一个类的构造器需要传入很多参数的时候,他的可读性会变得很差,这个时候用建造者模式的思想进行重构会让代码更加灵活,可读性也更好。下面演示一下具体步骤:要创建对象的类是phone类。里面有两个属性numberpeople。首先私有化构造方法,传入参数是Builderbuilder,这个是下面我们......
  • SpringBoot中,如何把自定义的yml配置文件中的内容和对应类的bean对象取出
    首先yml文件中的自定义配置如下login-type-config:types:k1:"yuheng0"k2:"yuheng1"我们有两个对应的类,yuheng0和yuheng1,他们都实现了say接口,并且重写了say方法。下面要通过请求k1k2获取yuheng0和yuheng1类的bean对象。注意,要记得加上Component注解......
  • Java面向对象第四章方法重写与多态练习题
    练习1:使用重写优化电子宠物系统需求说明使用方法重写优化电子宠物系统,实现如下效果 packagecom.hz.ch02;/***猫类*@author26255**/publicclassCatextendsFather{ privateStringsex; publicCat(Stringname,inthealth,intlove,Stringse......
  • C语言中指针解引用
    在32位的操作系统中,指针占据4个字节。在64位的操作系统中,指针占据8个字节。以下程序都是在32位操作系统中运行的。1.指针解引用程序运行结果为12345600进入调试,可以看到变量a在内存占4个字节,a的地址为0x008FF794,在内存中的存储方式为小端存储方式。当程序走完*p=0这一行......
  • 65.【C语言】联合体
    目录目录1.定义2.格式3.例题答案速查分析4.练习答案速查分析5.相同成员的联合体和结构体的对比6.联合体的大小计算2条规则 答案速查分析练习答案速查分析7.联合体的优点8.匿名联合体1.定义和结构体有所不同,顾名思义:所有成员联合使用同一块内存空间,因......
  • 全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字
    全网最适合入门的面向对象编程教程:55Python字符串与序列化-字节序列类型和可变字节字符串摘要:在Python中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些字节的实际数据结构,字节序列和可变字节字符串的主要区别在于其可变性和用途,bytearray是可变的字节序列......
  • Java多态性:面向对象编程的精髓
    目录1.什么是多态性?2.多态性的两种形式2.1 编译时多态(静态多态)2.2 运行时多态(动态多态)3.多态性的好处4.示例代码5.拓展知识5.1抽象类和接口5.2泛型5.3反射在软件开发的世界里,Java以其强大的面向对象编程(OOP)特性而闻名。今天,我们将深入探讨Java中的核心概......
  • C语言 函数指针
    概念在C语言中,函数指针是一种特殊的指针类型,它指向的是函数而不是普通的数据变量。函数在内存中有其入口地址,函数指针就是用来存储这个地址的变量。函数指针的定义函数指针的定义形式如下:返回值类型(*指针变量名)(参数类型列表);例如,定义一个指向返回值为int,参数为int......
  • 实验1 C语言输入输出和简单程序编写
    实验1:#include<stdio.h>intmain(){printf("0\n");printf("<H>\n");printf("II\n");return0;}  实验2:#include<stdio.h>intmain(){doublea,b,c;scanf("%l......
  • C语言顺序表 逐行解析!!!
    1、顺序表的概念及结构线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的,线性表在物......