博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言记录汇总
阅读量:4676 次
发布时间:2019-06-09

本文共 2177 字,大约阅读时间需要 7 分钟。

uint32_t    
转载自:http://blog.sina.com.cn/s/blog_6aea878e0100tl0f.html
体会
1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况.
    如:
   a> 当某个数据不可能为负数时我们一定要考虑用以下类型:
      unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsignedlong int,
   b> 当有些数据你不知道是正负时一定不要用"a>"中的类型,不然他永远也不可能为负.
       
   c> 数据的边界值要多注意, 如:
      uint32_t    a,b, c;
      uint64_t   m;
      
      m = a * b + c;
      在该运算中可能出现错误, "a*b"的类型可能超过uint32_t的最大值,这时一定不要忘了类型转换.
      m = ((uint64_t)a) * b + c;
2>. 在适当的时候要会自我定义数据类型.
    我们都知道linuxC开发中的常见扩展数据类型的定义有:uint8_t, uint16_t, uint32_t, uint64_t, size_t,ssize_t, off_t .... 他之所以要自己定义出数据类型是有道理的, 如: typdef unsigned intuint32_t; 表示uint32_t为32位无符号类型数据, 其实size_t也是32位无符号数据类型,
为什么不直接写"unsigned int"呢?
    为了程序的可扩展性, 假如将来我们需要的数据大小变成了64bit时,我们只需要将typedef long longsize_t就可以了, 不然我们可要修改好多好多的地方了.
这种设计我们同样可以应用到自己的开发中来,当自己设计一个int类型保存某种数据时,但你又没把握将来是不是要用longint时你可以引用一个自己定义的数据类型的啊!
stdint.h
-----------------------------
typedef unsigned int           uint32_t;
uint32_t.c
-----------------------------
[cpp]   
 
  1. #include <stdio.h>  
  2. #if 0        
  3. #include<stdint.h>   // uint32_t  
  4. #endif       
  5.              
  6. typedef unsigned int      uint32_t;  
  7. typedef unsigned long long uint64_t;  
  8.                
  9. int main()  
  10. {  
  11.        uint32_t a;  
  12.        a = 12;  
  13.        printf("a = %x\n", a);  
  14.        printf("sizeof(a) = %d\n", sizeof(a));  
  15.   
  16.        uint64_t b;  
  17.        b = 12;  
  18.        printf("b = %x\n", b);  
  19.        printf("sizeof(b) = %d\n", sizeof(b));  
  20. }    
  21.   
  22.   
  23.   
  24. a = c  
  25. sizeof(a) = 4  
  26. b = c  
  27. sizeof(b) = 8  
[cpp]   
 
  1. int main()  
  2. {  
  3.     unsigned __int64 a ;  
  4.     printf("请输入a:");  
  5.     scanf("%I64u",&a);  
  6.     printf("a = %I64u\n",a);  
  7.     a = (unsigned __int64)1 << 60;  
  8.     printf("a = %I64u\n",a);  
  9.     a = 1 << 60;//由于没有转换类型,1移位造成越界变成了0  
  10.     printf("a = %I64u\n",a);  
  11.         return 0;  
  12. }  
 
[cpp]   
 
  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     unsigned long long a = (unsigned long long)1 << 63;  
  5.     printf("%llu\n",a);  
  6.     return 0;  
  7. }  

 

 

树的双亲表示法

由于树中的每个结点都有唯一的一个双亲结点,所以可用一组连续的存储空间(一维数组)存储树中的各个结点,数组中的一个元素表示树中的一个结点,每个结点含两个域,数据域存放结点本身信息,双亲域指示本结点的双亲结点在数组中位置。

这里写图片描述

C语言代码实现:

#include
#include
#define MAX_SIZE 20typedef char ElemType; typedef struct Snode //结点结构 { ElemType data; int parent; }PNode; typedef struct //树结构 { PNode tnode[MAX_SIZE]; int n; //结点个数 }Ptree; void InitPNode(Ptree &tree) { int i,j; char ch; printf("请输入结点个数:\n"); scanf("%d",&(tree.n)); printf("请输入结点的序及值其双亲序号:\n"); for(i=0; i

 

测试结果:

这里写图片描述

转载于:https://www.cnblogs.com/1023linlin/p/7609479.html

你可能感兴趣的文章
关于SQL_MODE的那些事
查看>>
ORM介绍
查看>>
Yii2助手函数
查看>>
yii2之DetailView小部件
查看>>
My97DatePicker日期插件
查看>>
yii2相关前台组件
查看>>
Yii2引入css和js文件
查看>>
control-lable的用法
查看>>
bootstrap元素居中
查看>>
Composer常用的命令整理
查看>>
Yii2 文件上传
查看>>
前端面试题
查看>>
Yii2之GridView部件
查看>>
Yii2 composer报错处理
查看>>
Yii 2.0 rules 验证规则大全
查看>>
yii2.0用户登录,退出判断
查看>>
Yii2 menu navbar nav小部件的使用示例
查看>>
Yii2 选择布局的方式
查看>>
关于Tfrecord
查看>>
时间序列分析
查看>>