首页 > 其他分享 >20240322,结构类型,枚举,

20240322,结构类型,枚举,

时间:2024-03-23 23:33:14浏览次数:23  
标签:int enum char color 枚举 类型 red 20240322

 一,枚举

1.1 常量符号化 

程序中用符号表达数字,增加程序的可读性?

#include<stdio.h>//能跑,但是报错不推荐将字符串转为CHAR** 
const int red=0;
const int yellow=1;
const int green=2;
//为撒在前面? 
int main(int argc,char const *argv[]){
	//两个参数,整数,字符串数组【记不住 ,再复制一遍】 
	//整数告诉我们字符串数组有多大,数组带入函数需要另一个参数告诉大小
	int color=-1;
	char* colorName = NULL;
	//不懂
	printf("请输入你喜欢的颜色代码:\n");
	scanf("%d",&color);
	switch (color){
		case red :colorName="red";break;
		case yellow :colorName="yellow";break;
		case green :colorName="green";break;
		default :colorName="unknown";break;
	} 
	printf("你喜欢的颜色是%s\n",colorName);
	return 0;
}

输入数字,因为初始化了三个常量INT,输入数字赋值给COLOR,COLOR==1==1==YELLOW,就是COLOR==YELLOW,CHAR*COLORNAME是指针字符串,????直接给了被指的东西吗?

1.2 枚举

#include<stdio.h>
//其实只有头文件之前的变了

enum color{red,yellow,green} ;

//一般用大写区分常量 

用户定义的数据类型,ENUM 枚举类型的名字{名字0,名字1,……名字N};分号
大括号里面的就是常量符号 ,CONST INT类型,值0--N,一个值有序排列的常量集合

#include<stdio.h>
enum color{red,yellow,green} ;//声明一种新的数据类型color
void f(enum color c);
//函数需要的参数是一个ENUM里面的常量?给常量名? 
//这种类型使用的时候要带上NUME 
int main(void){
	enum color t=red;
	scanf("%d",&t);
	f(t);
	return 0;
}
void f(enum color c){
	printf("%d\n",c);
}
//输出常量的值 

实际上是以整数来做内部计算和输入输出的

1.3 自动计数的枚举

#include<stdio.h>
enum COLOR{RED,YELLOW,GREEN,NumCOLORS};
int main(void){
	int color=-1;
	char* Cnames[NumCOLORS]={
	"red","yellow","green"
	};
	char* colorName=NULL;
	printf("请输入你喜欢的颜色代码:\n");
	scanf("%d",&color);
	if(color>=0&&color<NumCOLORS){
		colorName=Cnames[color];
	}else{
		colorName="unknown";
	}
	printf("你喜欢个鬼颜色%s\n",colorName);
	return 0;
}

这是什么东西啊丢!!!!!啊啊啊啊啊啊

#include<stdio.h>
//	[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
enum COLOR{RED,YELLOW,GREEN,NumCOLORS};
//跟在最后的名字后面的字,他的值,就是前面的计数
//NumCOLORS=3? 
//好像是一种固定写法,不能直接改成3,丢,讲黑话 
int main(void){
	int color=-1;
	char* Cnames[NumCOLORS]={
	"red","yellow","green"
	};
	//指针数组,下标是枚举量 
	char* colorName=NULL;
	//初始化,0地址 
	printf("请输入你喜欢的颜色代码:\n");
	scanf("%d",&color);
//数字
	if(color>=0&&color<NumCOLORS){
		colorName=Cnames[color];
	}else{
		colorName="unknown";
	}

//遍历数组 Cnames,数字color和数组下标比较,如果相等,colorName指向那个数组单元
	printf("你喜欢个鬼颜色%s\n",colorName);
    printf("代号%d\n",colorName);
	return 0;
}

 所以这里ENUM一下,就是为了他自动计数?得到下标量,剩下的一点关系没有,改了ENUM的排序好像也没有什么关系

#include<stdio.h>

enum COLOR{YELLOW,GREEN,RED,NumCOLORS};

int main(void){
	int color=-1;
	char* Cnames[NumCOLORS]={
	"red","yellow","green"
	};
	

好像输出没什么影响,丢!!!啊啊啊啊啊 

1.4 枚举量

#include<stdio.h>

enum CO{RED=1,YELLOW,GREEN=5,NumCOS};
enum COLOR{DSF,DD,FF,NumCOLORS};
//计数也是0-N 
int main(int argc,char const* argv[]){
	printf("code for GREEN is %d\n",GREEN);//5
	printf(" %d\n",NumCOS);//6
	printf(" %d\n",NumCOLORS);//3
	return 0;
}
#include<stdio.h>
enum CO {RED=1,YELLOW,GREEN=5,NumCOS};
int main(int argc,char const* argv[]){
	enum CO co=0; 

	//ERROR:invaild conversation from 'int' to 'CO'
    //1,2,5是有意义的值,0,3,4,是没有意义的??

	printf(" %d\n",co);
	return 0;
}

 我直接一个看不懂听不懂 

虽然枚举类型可以当作类型使用,但是实际上很(bu)少(hao)用
如果有意义上排比的名字,用枚举比constint方便
枚举比宏(macro)好,因为枚举有int类型 

是C里面没有那么成功的东西,主要就是用来定义符号量,而不是当作一种数据类型来使用? 

二,结构

2.1 结构类型

2.2 结构与函数

2.3 结构中的结构

三,联合

3.1 类型定义

3.2 联合

标签:int,enum,char,color,枚举,类型,red,20240322
From: https://blog.csdn.net/qq_51583806/article/details/136937779

相关文章

  • Java 枚举(超详细讲解)
    Java语言的强大之处在于它提供了多种多样的类库,从而大大提高了程序的编程效率和质量。一、枚举事先考虑到某一变量可能的取值,尽可能用自然语言忠表意清楚的单词来表示它的每一个值,用这中思路定义的类型被称为枚举类型。枚举事由一组固定的常量组成的类型。在Java中每个枚......
  • long数据类型跨平台问题
    源代码#include<iostream>intmain(){ std::cout<<"sizeoflong:"<<sizeof(long)<<std::endl; return0;}Windowslong->32位Linuxlong->64位建议跨平台程序尽量采用跨平台库,如Boostnamespaceboost{using::int8_t;......
  • 如何判断是哪一种类型的VPP项目
    判断VPP是那种类型,可以通过查找到Cognex安装目录下的VPPVersion.exe然后再命令行键入如下来显示VPP的类型以及包含工具的版本信息C:\ProgramFiles\Cognex\VisionPro\bin>VPPversion--helpCognexVisionProVersionUtility-v1.0VPPVersion.exeOptions:-v,--verbose......
  • mysql中的数据类型大全纯干货------------时间日期类型
    简介(类型预览):在mysql8.0版本中支持的类型主要有:YEAR类型表示年DATE类型表示年,月,日TIME类型表示时,分,秒DATETIME类型表示年,月,日,时,分,秒TIMESTAMP类型通常表示带时区的年,月,日,时,分,秒数据类型单位占用字节格式下限上限YEAR年1YYY或YY19012155TIME时间3H......
  • 1.变量与数据类型、输出与输入
    C语言语法知识点1.变量与数据类型、输出与输入C中每个变量都有特定的类型,类型决定了变量存储的大小。变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。有以下几种基本的变量类型:类型char字符型,1字节(1字节8位,即1字节=8bit)int整型,4字节......
  • JAVA高级面向对象二:多态下的类型转换问题
     packagecom.itheima.多态;publicclassTest{//多态好处publicstaticvoidmain(String[]args){////好处1:实现解耦合,右边对象可以随时切换,后续业务随即改变//Peoplep1=newTeacher();//p1.run();////好处2:可以使用父......
  • 数据类型
    一、常用数据类型整数类型:INT(或INTEGER)定点数类型:DECIMAL日期时间类型:YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型:CHAR、VARCHAR、TEXT二、整数类型例子:--1、建表createtabledemo.demo1(numint);--2、插入数据insertintodemo.demo1values(null)......
  • 自定义类型结构体♪♪♪
    目录结构体结构体的声明结构体的变量的定义结构体的变量的初始化结构成员访问操作符结构体的特殊声明(匿名结构体)结构体重命名结构体内存对齐对齐规则:为什们要存在内存对齐?怎样设计结构体使其占用内存空间大小尽量小一点?修改默认对齐数结构体传参结构体实现位段......
  • 高通平台怎么检测充电器类型为SDP,CDP,DCP
    高通平台(QualcommSnapdragon)检测充电器类型SDP(StandardDownstreamPort,标准下行端口)、CDP(ChargingDownstreamPort,充电下行端口)和DCP(DedicatedChargingPort,专用充电端口)是基于USBBatteryChargingSpecification1.2(USBBC1.2)或更高版本的规定实现的。这些充电类型主要是通......
  • 高通充电类型
    高通(Qualcomm)在Android平台上提供了多种充电技术,以下是几种主要的充电类型:1.QuickCharge(QC)QuickCharge1.0:最初的快速充电技术,提升了充电速度。QuickCharge2.0:引入了动态电压和电流调整(HVDCP),能够提供更高的充电功率。QuickCharge3.0:增加了INOV(最佳电压智能协商),提高......