zoukankan      html  css  js  c++  java
  • 如何判断联合体中存储的数据类型、结构体数组存储表达式及数组元素类型判断

    一、如何判断联合体中存储的数据类型
     1 #include <stdio.h>
     2 
     3 /* 结构体 */
     4 typedef struct{    
     5     short b;//1 2 3 判断联合体中存储的数据的类型
     6     union {
     7         int num;
     8         char ch;
     9         double d;
    10     }u;    
    11 }INFO;
    12 
    13 int main()
    14 {    
    15     INFO info1,info2,info3;
    16     info1.b = 1;
    17     info1.u.num = 15;
    18     info2.b = 2;
    19     info2.u.ch = 'A';
    20     info3.b = 3;
    21     info3.u.d = 0.001;
    22     if(info1.b==1)
    23         printf("%d
    ",info1.u.num);
    24     if(info2.b==2)
    25         printf("%c
    ",info2.u.ch);
    26     if(info3.b==3)
    27         printf("%f
    ",info3.u.d);
    28     return 0;
    29 }

    二、结构体数组存储表达式数组,数组元素可以类型判断

     1 #include <stdio.h>
     2 
     3 /* 表达式结构体 */
     4 typedef struct {    
     5     short b;//判断类型
     6     union {
     7         int num;
     8         char ch;
     9     }u;        
    10 }EXPRESSION;
    11 
    12 /* 判断是否是数字 */
    13 int isdigit(char ch){
    14     return ch>='0'&&ch<='9';
    15 }
    16 
    17 int main()
    18 {    
    19     /* 表达式字符串 */
    20     char s[] = "150+(2*3)-5";
    21     /* 表达式结构体数组 */
    22     EXPRESSION expression[20];
    23     /* 记录表达式 */
    24     static unsigned short count;
    25     /* 计算数字sum */
    26     int sum = 0;
    27     /* 字符串转表达式结构体数组 */
    28     for(int i=0; s[i]; ++i)
    29     {
    30         /* 1.数字累加 */
    31         if(isdigit(s[i])&&s[i+1]){    
    32             sum = sum*10 + s[i]-'0';
    33             expression[count].b = 1;        
    34             continue;                    
    35         }
    36         expression[count++].u.num = sum;
    37         sum = 0;    
    38         /* 2.非数字 */
    39         expression[count].b=2;
    40         expression[count++].u.ch = s[i];            
    41     }
    42     /* 表达式结构体数组打印 */
    43     for(int j=0; j<count; ++j)
    44     {
    45         if(expression[j].b==1){//数组元素的数据类型判断
    46             printf("%d",expression[j].u.num);
    47         }
    48         else if(expression[j].b==2){
    49             printf("%c",expression[j].u.ch);
    50         }        
    51     }    
    52     return 0;
    53 }

     

  • 相关阅读:
    Spring 事务全解析
    oracle trigger pl/sql
    reflection
    JAXP(Java API XML Parser)
    log4j扩展后的Appender
    Hibernate sql查询
    tt,mongodb主从启动命令
    4种挂隐藏链接的代码
    Delphi过程函数传递参数的几种方式
    学校Win7 KMS激活服务器已经可以用了
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/11611157.html
Copyright © 2011-2022 走看看