c语言变态语法一

这篇博客整理了一些C语言中不太常见或者容易忽视的语法点,包括一些变态语法。作者通过代码注释的方式在示例代码中呈现这些知识点,方便读者直接运行查看效果。
摘要由CSDN通过智能技术生成


         比较杂乱的记录的一些c语言的变态语法,或者说一些比较少见的,又或者说是一些比较容易忽略的语法,形式整理的不怎么好。

 我将这些需要注意的问题通过代码注释的形式写在了代码之中,粘贴下来便可以调试运行查看结果。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void memcpy_w(char *dest,char *source,int k)
{
    while(--k > 0)
        *dest++ =  *source++;
}

double Func();

 main()
{
/*
    生僻语法一:
    整型常量开始如果为0,将被解析为8进制的格式,或者
    16进制的格式
*/
  int a,b,c;
//scanf("%d %d",&a,&b);
/*
  如果规定了输入格式,那么后面的00215将为215,
  下面的直接定义的结果为141,0215将为8进制的数
*/
  a= 0215;          //8进制
  b=215;            //10进制
  c= 0x215;         //16进制
//a=a/ *b;
  printf("a: %d b: %d c: %d\n",a,b,c);
/*
    二:单引号和双引号不同,单引号引起的一个字符代表一
    个整数,如'a'代表0141(8进制),或者97(10进制),
    双引号引起的字符串代表的是指向无名数组起始字符的指
    针,数组被双引号之间的字符及一个额外的二进制值为0
    的字符'\0'初始化,如下面例子输入的结果相同

*/
  printf("Hello\n");
  char hello[]={'H','e','l','l','o','\n',0};
  printf(hello);

 /* 
  编译器能够在+连续的情况下报错
  int x=2;
  int y=1;
  int z=x+++ ++y;
  printf("z: %d\n",z);
*/

 /*
  易混淆情况如下
  如果声明 float *g(),(*h)();
  *g() 与 (*h)()是浮点表达式,因为()结合性高于*,
  *g() 也就是*(g()),g是一个函数,该函数的返回值
  为指向浮点数的指针,h是一个函数指针,返回值为
  浮点类型
 */
 /*
  变态语法三:
  可以将函数的声明甚至可以写成如下的样子:
  (*(void(*)())0)();
  表示硬件调用首地址为0位置的子程序
 */
// int d=0;
// (*(void(*)())0)();
//printf("%d",d);
    int d=2;
    switch(d)
    {
        case 1: printf("1\n");    break;
        case 2: printf("2\n");    break;      //不用加大括号
        case 3: printf("3\n");    break;
    }
/*
    易混淆:
        在下面的程序中,可能会出现死循环的情况,如果
        编译器按照内存地址递减的方式给变量分配内存,
        那么内存中数组a之后的一个字实际上是分配给了
        整型变量i,即本来不存的a[10]的值实际上是给了i,
        这样就陷入了死循环。不要惊讶就好!!!
        但我用codeblock编译,没有出现死循环

		在使用vc++6.0 运行下面的程序时,出现了死循环,
		通过调试发现,i回到了0,即出现了上面所说的情况
		最好是能够亲自试验一下
*/

  /*  
	int i,e[10];
    for(i=0;i<=10;i++)
        e[i]=0;
    printf("over\n");
  */

    char *source = "hello World\n";
  //此处下面需要分配
  //char *dest = (char *)malloc(sizeof(1));
  //char *dest = (char *)malloc(sizeof(15));
    char dest[1];
  //只要给其实地址分配了内存,后面的就都是连续的存储空间,
    memcpy_w(dest,source,14);
    printf("dest: %s",dest);

    int bignuma=999999999;
    int bignumb=bignuma;
    int num=bignuma + bignumb;
    printf("num : %d\n",num);
 /*
    易错难找的bug:
        数据上界溢出,导致错误的结果,这个是比较难找到的错误!!!
        当然可能会有数据下界溢出的情况
 */
    if(bignuma+bignumb > 10000000000 )
        printf("success\n");
#ifndef INT_MAX
#define INT_MAX 999999999
#endif
    printf("INT_MAX: %d\n",INT_MAX);


// if(unsigned(bignuma) + unsigned(bignumb) > )
	
//  printf("%d \n",bignuma);
//	testFun();

//	testFun2();
    Func();
}


double Func()
{
    double t=10.000;
    return t;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值