码迷,mamicode.com
首页 > 编程语言 > 详细

[ 1011] <<C语言深度剖析>> 测试 TEST

时间:2016-01-01 23:13:35      阅读:475      评论:0      收藏:0      [点我收藏+]

标签:c语言深度剖析 代码   c语言注意的基本细节   

/********************************
**  wzsts《C语言深度剖析》2016 **
**                    **
**     fun1~fun6代表6章节内容 **
**fun10~fun19代表fun1所调用函数 **
**                    **
**     世界因规则而美好     **
** #if(1)可运行,#if(0)不运行。 **
** Data  Author   PC       **
**16.1.1  wz  VM.CentOS6.5   **
*********************************/
//第一章  以前打过,然后换系统丢失文件。想想,有些东西,失去了,可以换更好的!*/
#include <stdio.h>
#include<string.h>
#define N  10    /* 定义分配空间,而extern和define声明,宏替换没有分配空间 */ 
#define EPSINON  0.0001  
fun0()     /* 函数没有类型,而返回值有类型 */
{
 int fx=10;
 return fx;
}
void static fun()/* 即便类型不同,也不能重名 */
{
/*  int fun =10     函数名,变量名不要重复   */
}
void fun10()
{

int i=4;
int *p=NULL;
int a[10]={1,2,3,4,5};
char b[ ]="abcde";
char *c="abcde";
/*  char *c[10]="abcde";    error*/
char d[ ]={"abcde"};
char e[]={‘w‘,‘z‘,‘z‘,‘x‘};
   if(b!=NULL)
       if(NULL==c)  ;
       else        printf(" c isn‘t NULL\n");
  else
   { 
    NULL;         /* 细节风格,防止误认 */
    }
printf("*********************\n"); 
printf("%d\n",sizeof(  p) ) ;         /* 4 */
printf("%d\n",sizeof( *p) ) ;         /* 4 */
printf("%d\n",sizeof( int)*i ) ;/* 4 i=0,is 0 i=4,is 16*/
printf("*********************\n"); 
printf("%d\n",sizeof(  a) ) ;         /* 40 */
printf("%d\n",sizeof(  a[10] ) ) ;    /* 4 */
printf("%d\n",sizeof(  &a) ) ;        /* 4 */
printf("%d\n",sizeof(  &a[0]) ) ;     /* 4 */
printf("%d,%d\n",sizeof(  b),strlen(b) ) ;         /* 6,5*/
printf("%d,%d\n",sizeof(  c),strlen(c) ) ;         /* 4,5*/ 
printf("%d,%d\n",sizeof( &c),strlen(e) ) ;         /* 4,9*/
printf("%d,%d\n",sizeof(  d),strlen(d) ) ;         /* 6,5*/ 
printf("*********************\n"); 
}
void fun11()
{
int i=-20;
unsigned j=10;
float ftestval=0.0,ff=0;
 if(ftestval==0.0) printf("test 1 \n");
 if((ftestval>=-EPSINON)&&(ftestval<=EPSINON)) printf("test 2 \n");
    ff=10000000.00+0.00000001; 
printf("test 2 is better \n f=%f d=%d\n",ff,ff);    /* 不能如此转化   */
   i=(int)ff;   printf( "f=%f d=%d\n",ff,i);        /*   强制转化   */
//bool b;  C++
//if(b==FALSE) ;  VC++ 中TRUE是1VB中TRUE是-1 
//printf("d=%d,u=%u\n",i+j,i+j);            /*d=-10,u=4294967286*/
//for(j=9;j>=0;j--)  {printf("%u\n",j);}    /*死循环 一直打印      */
//for(j=9;j>=1;j--)    {printf("%u\n",j);}  /* 修改为打印9到1      */    
scanf("%d\n",&i);
switch(i)
  {/******       right        ********/
    case 1:printf("case 1\n");
    case 2:printf("case 2\n");
   /*******      error        *******/
   // case A:printf("case A\n");      /*  case语句 后应少于20行   */
   //      scanf("%d\n",&i);
          switch(i)
           {
           case 1:printf("case 2.1\n");break;
           case 2:printf("case 2.2\n");break;
           }

    default:printf(" error\n");   /*  可无,有则放默认错误程序 break有妙用  case 后是整型和字符型表达式  */
   /*********  error  end  **********/  
  }
}
void fun12()
{
/*
for(初值循环条件;循环语句)
for(i=0,j=1;i<10,j<3;i++,j++)
while(循环条件){} 
do{}  程序至少执行一次
while(循环条件)
*/
 static int i=0;
 //for(;i<10;i++)
   for(i=0;i<=10;i++)          /* 半开半闭写法 */
    {
      ;
     }
printf("***************\n");
while(i)
{
 i--;printf("%d",i);
}
printf("%c\n",13);      /* 需要记忆一些特别的ASCII码值13 CR回车 */
printf("***************\n");
do
 {printf("%d\n",i);}     /*  括号外不可放其他代码 */
while(i);

printf("%d\n",i);
printf("***************\n");
/*
**长循环在内效率高,程序不要修改循环变量的值
**循环要短,代码清晰,3层以内
**死循环不一定死,也不一定没有用;(测试机子可以开多少空间,跑认为终止的程序)
*/
printf("c\n");
do
{
for(i=0;i<5;i++) 
   {
     printf("*"); 
    //  if(i==1) goto wz;
      if(i==2)
       continue;  /*continue终止 本次(本轮)循环*/
      if(i==4)    /*if(i=4)结果不一样*/           
       break;     /*break 终止 本层循环*/
  }
printf("%2d",i);

wz:                /*goto 建议少用跳出本层循环,也跳不出函数*/
printf("%d",i);
printf("\n");
i-=4;             /*轻易改的动数字则死循环打印*/
printf("%2d",i);
}
while(i>0);

printf("\n");
printf("%d\n",i);
}
 void fun13()
{
// extern    int i;         
// static    int i;
// unsigned  int i;
//   auto    int i;
// const     int i;
//  long     int i;
// short     int i;
//volatile   int i;
struct{}su;
printf("%d",sizeof(su));/* VC IS 1 ,VM IS 0;*/
typedef struct{int l;int a[0];}type;
//typedef struct{int l;int a[ ];}type;/*可变长结构体 可变长数组,柔性数组,不同编译器不同写法*/
//typedef struct{int l;int a[10];}type;  /*  不同的意思*/
enum EN{A=0,B,C=100,d,e}EN;
union check{int i;char c;}un;
un.i=1;
printf("%d\n",un.c);                      /*01 0001->1000 小端存储    */
printf("%d\n", C);
printf("%d\n", sizeof(EN));               /* 是一个指针,32位机上为4  */
/*
区别          枚举      宏
——————————————————————————————————————
|编译时     |确定值    |替换,未确定值|
|定义常量   |一次多个  | 一次一个    |
|编辑器调试  |  可以   |  不可以     |
|定义函数    | 不可以   |   可以     |
*/
}

void fun14()
{
  auto  int a=0;
  const int b=1;
  register  c=2;
  int DataGotFromfun0=fun0();
printf("%d\n",a);  
// printf("%d\n",&a);   //测试正确则如此注释                 
printf("%d\n",printf("%d ",a));     
printf("%d\n",printf("%d \n",a));   
/* 0    
** 0 2
** 0
** 3
*/  
printf("%d\n",c);
/* printf("%d\n",&c);  测试错误则如此注释*/    
/*
** static 修饰变量,函数,C++中
*/  
printf("DataGotFromfun0 is %d\n",DataGotFromfun0); 
/*
**  变量,函数 命名所涉及英语语法
*/
printf("%d\n",b);
/*  b++;       const==readonly  */
printf("%d\n",sizeof(int) ) ;/* 4 */
printf("%d\n",sizeof( a ) ) ;/* 4 */
printf("%d\n",sizeof  a   ) ;/* 4 */
/* printf("%d\n",sizeof int  ) ;  */
/*     同return(a);括号可去         */ 
}  
 
 void  main()
{
//fun10();
//fun11();
//fun12();
//fun13();
//fun14();
}


[ 1011] <<C语言深度剖析>> 测试 TEST

标签:c语言深度剖析 代码   c语言注意的基本细节   

原文地址:http://wz609.blog.51cto.com/10821410/1730645

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!