c语言变态语法二


           下面介绍了其他一下c语言其他一点用的比较少的东西,和一些比较容易错误的地方,还是一样的办法,将问题以注释的形式写在了代码之中,主要是在学习时,边看边亲自动手试了一下,而整理成条款的话比较枯燥乏味,所以直接以代码加注释的形式贴出,如下:

            

#include <stdio.h>

//用于捕捉异步事件
#include <signal.h>


//double square();
/*
1	宏定义需要注意空格
#define  f (x) ((x)-1)
被解释为 f	(x)((x)-1)
因为f和(x)之间有一个空格

2	还有宏不是函数
#define  abs(x)	(((x)>=0)?(x):-(x))
	abs(a-b)会被解释为
		a-b>0?a-b:-a-b
		其中-a-b相当于(-a)-b
  
3	宏并不是语句
#define assert(e) if(!e)	assert_error(_FILE_,_LINE_)

//其中_FILE_和_LINE_是内建与c语言预处理器中的宏,它们会被扩展为
//所在文件的文件名和所处代码行的行号

	if(x>0 && y>0)
		assert(x>y)
	else
		assert(y>x)会被解释为
			
		if(x>0 && y>0)
			if(!(x>y))	assert_error(_FILE_,_LINE_);
		else
			if(!(y>x))	assert_error(_FILE_,_LINE_);


4	宏并不是类型定义
#define FOOTYPE struct foo
//foo是自定义的结构体类型
	FOOTYPE a;
	FOOTYPE b,c;
	上面的使用正确,但是不代表FOOTYPE是一种类型
	


*/


//使用errno检测错误

main()
{
//	register	
//	int c;
/*	
	使用缓冲区,这里暂时不确定怎么使用,但是知道其原理是
	比较重要的,还有c语言提供了该种功能
*/
//	static char buf[BUFSIZ];

//			setbuf(stdout,buf);

	while((c = getchar()) != EOF)
		putchar(c);

/*
	单独的下面这段程序不能执行成功,vc 6.0的环境
	NULL表示为指向内存为0的位置,但在禁止读取内存
	地址为0的机器上,该程序不能执行成功,很显然,
	我的电脑没有执行成功。
	char *p;
	p= NULL;
	printf("Location 0 contains %d\n",*p);
*/
/*
	求余的运算应尽量避免出现负数的情况,结果可能
	会和想象中差别很大
*/


//	int x=10.0;
//	printf("%g",square(x));
}

/*
//该种写法暂时不能通过编译,可能是老版本的c语言的用法
double 
square(x)
	double x;
{
	return x*x;
}

*/

补一段代码:

c语言多参数示例,下面函数的功能是对多个参数求和,利用的是c语言参数自右向左压栈传递的方式,*p是取num后面的第一个参数

int __cdecl Sum(int num, ...)
{
	int *p = &num + 1;
	int ret = 0;

	while(num --)
	{
		ret += *p++;
	}
	return ret;
}



下面的代码纯粹是觉得比有趣

#include <stdio.h>
#include <setjmp.h>
jmp_buf b;

void Func()
{
	longjmp(b ,1);
}

int main()
{
	if(setjmp(b))
	{
		cout << " World\n";
	}
	else
	{
		cout <<"hello ";
		Func();
	}
	system("pause");
}

上面的代码输出结果是 hello world 。是不是很不按常理,实际上,当setjump返回时,会返回0,此时会打印hello,但是func中的longjmp的作用 ,就是然程序的执行流程回到当初的setjump返回的时刻,并且返回longjump指定返回的值(longjmp的参数2),也就是1,所以此时会打出world并退出。很神奇吧,只是当增长见识用,实际工作编程代码,不建议使用这个难以理解的逻辑行为。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip
毕设新项目基于python3.7+django+sqlite开发的学生就业管理系统源码+使用说明(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 学生就业管理系统(前端) ## 项目开发环境 - IDE: vscode - node版本: v12.14.1 - npm版本: 6.13.4 - vue版本: @vue/cli 4.1.2 - 操作系统: UOS 20 ## 1.进入项目目录安装依赖 ``` npm install ``` ## 2.命令行执行进入UI界面进行项目管理 ``` vue ui ``` ## 3.编译发布包(请注意编译后存储路径) #### PS:需要将编译后的包复制到后端项目的根目录下并命名为'static' 学生就业管理系统(后端) ## 1.项目开发环境 - IDE: vscode - Django版本: 3.0.3 - Python版本: python3.7.3 - 数据库 : sqlite3(测试专用) - 操作系统 : UOS 20 ## 2.csdn下载本项目并生成/安装依赖 ``` pip freeze > requirements.txt pip install -r requirements.txt ``` ## 3.项目MySQL数据库链接错误 [点击查看解决方法](https://www.cnblogs.com/izbw/p/11279237.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值